Консультация № 180942
25.11.2010, 19:09
53.02 руб.
0 47 1
Здравствуйте, уважаемые эксперты! Прошу Вас помочь с решением следуюшей задачи:
- написать программу в среде MPLab для микроконтроллера PIC16F84. Требуется последовательно выводить числа от 0 до максимально возможного числа с использованием таймера прерываний на индикатор.
Прилагаю блок - схему, по которой пишется программа с точностью до обозначений (но в ней чего-то не хватает). Из этой блок - схемы удалять элементы нельзя и переобозначать переменные тоже. Однако, насколько я понимаю, необходимо добавить блок - схемы некоторых подпрограмм. Вот ссылка:

blok_shema.pdf (103.6 кб)

К ответу прошу также приложить и блок - схему с ДОПОЛНЕНИЯМИ!
Под индикатором, на который последовательно выводятся числа, понимается следующий приборчик:



Система команд микроконтроллера PIC16F84 такова:




Спасибо за Ваш труд!


Обсуждение

давно
Посетитель
7438
7205
30.11.2010, 17:55
общий
Конечно. Заодно разберусь, что в моей не так Любопытно же...
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Неизвестный
30.11.2010, 17:59
общий
Адресаты:
Хорошо. Вот код.
=====================================
STATUS EQU 03h
PORTB EQU 06h
TRISB EQU 86h
RP0 EQU 5h
DAT EQU 04h
SYN EQU 05h
PCL EQU 02h
X EQU 0ch
CNT_1 EQU 0dh
CNT_2 EQU 10h
CNT_3 EQU 12h
CNT_4 EQU 13h
W1 EQU 0eh
W2 EQU 0fh
W3 EQU 11h
C EQU 0h

ORG 0h
GOTO START
ORG 4h
RETFIE

START
BSF STATUS,RP0
BCF TRISB,DAT
BCF TRISB,SYN
BCF STATUS,RP0

BSF PORTB,DAT
BSF PORTB,SYN

CLRF X



M00 CALL DISPLAY
CALL PAUSE
INCF X,1
GOTO M00


;vivod 4isla na display

DISPLAY
MOVLW d'4'
MOVWF CNT_1
MOVF X,0
MOVWF W1

M01 MOVLW d'10'
CALL DIVISION
CALL CODE_SEG
CALL OUT_SEG
DECFSZ CNT_1,1
GOTO M01
RETURN

;vivod cifri

OUT_SEG
MOVWF W2
MOVLW d'8'
MOVWF CNT_2

M03 BCF PORTB,DAT
BTFSC W2,0
BSF PORTB,DAT

BCF PORTB,SYN
BSF PORTB,SYN
RRF W2,1
DECFSZ CNT_2,1
GOTO M03
RETURN

;delenie

DIVISION
MOVWF W2
MOVF W1,0
MOVWF W3
MOVF W2,0
CLRF W1

M04 SUBWF W3,1
BTFSC STATUS,C
GOTO M05
ADDWF W3,0
RETURN

M05 INCF W1,1
GOTO M04

;kodirovanie cifri

CODE_SEG
ADDWF PCL,1
RETLW b'00000011'
RETLW b'10011111'
RETLW b'00100101'
RETLW b'00001101'
RETLW b'10011001'
RETLW b'01001001'
RETLW b'01000001'
RETLW b'00011111'
RETLW b'00000001'
RETLW b'00001001'
RETURN

;pause


PAUSE
MOVLW D'155'
MOVWF CNT_2

P00 MOVLW D'100'
MOVWF CNT_3

P01 MOVLW D'2'
MOVWF CNT_4

P02 DECFSZ CNT_4,1
GOTO P02
DECFSZ CNT_3,1

GOTO P01
DECFSZ CNT_2,1
GOTO P00
RETURN
END







давно
Посетитель
7438
7205
30.11.2010, 18:15
общий
Уже вижу, что кодировка сегментов индикатора идет, начиная со старшего...
Мда, мне всегда казалось, что сегмент a должен быть нулевым битом
Пауза-то программная.
Программа точно рабочая? Ок, сегодня ночью сделаю все в лучшем виде
Заодно и свою подправлю...
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Неизвестный
30.11.2010, 18:34
общий
Адресаты:
Сегодня проверял рабочесть этого кода в аудитории. Всё ок! Жду Вашего ответа!
давно
Посетитель
7438
7205
02.12.2010, 00:50
общий
Вот прокомментированный код.
Нашел ошибку в своем коде. Главное - понял ее суть
Долго не давал, т.к. пытался осмыслить использование команд SUBWF и BTFSC(BTFSS).
Причем, в условиях дефицита времени...
Позже дам блок-схему и свою, подправленную...
Код:
STATUS	EQU	03h		;регистр статуса
PORTB EQU 06h ;порт В
TRISB EQU 86h ;регистр настройки порта В
RP0 EQU 5h ;бит выбора банка (статус)
DAT EQU 04h ;бит данных (порт В)
SYN EQU 05h ;бит синхронизации (порт В)
PCL EQU 02h ;регистр программного счетчика

;программные регистры (переменные)
X EQU 0ch ;выводимое число
CNT_1 EQU 0dh ;счетчики
CNT_2 EQU 10h
CNT_3 EQU 12h
CNT_4 EQU 13h
W1 EQU 0eh ;временные регистры для расчетов
W2 EQU 0fh
W3 EQU 11h
C EQU 0h ;номер бита С в статусе

ORG 0h ;точка входа
GOTO START
ORG 4h ;прерывание отсутствует
RETFIE

START ;начало программы
BSF STATUS,RP0 ;выбор банка 1
BCF TRISB,DAT ;используем на выход бит данных
BCF TRISB,SYN ;и бит синхро
BCF STATUS,RP0 ;банк 0

BSF PORTB,DAT ;установка битов в 1
BSF PORTB,SYN

CLRF X ;начинаем с X = 0


;основной цикл
M00 CALL DISPLAY ;рисуем Х
CALL PAUSE ;пауза
INCF X,1 ;Х = Х + 1
GOTO M00 ;и на повтор


;вывод числа в регистре Х на дисплей
DISPLAY
MOVLW d'4' ;4 цифры
MOVWF CNT_1 ;CNT_1 - счетчик цифр
MOVF X,0 ;W = X
MOVWF W1 ;W1 = W = X

;цикл вывода десятичных знаков
M01 MOVLW d'10' ;будем делить W1 на 10 и получать в W остаток
CALL DIVISION ; от деления - очередной младший разряд
CALL CODE_SEG ;конвертируем число в сегментный код
CALL OUT_SEG ;зажигаем нужные сегменты
DECFSZ CNT_1,1 ;CNT_1 = CNT_1 - 1, если 0, то на RETURN
GOTO M01 ;иначе повторяем
RETURN ;выход

;вывод цифры (отработка сегментов, заданных в регистре W)
OUT_SEG
MOVWF W2 ;W2 = W
MOVLW d'8'
MOVWF CNT_2 ;CNT_2 = 8 - число бит

;цикл по битам
M03 BCF PORTB,DAT ;установка в 0 RB4 (чтобы горело)
BTFSC W2,0 ;если 0 бит в регистре W2 = 0, то пропускаем
BSF PORTB,DAT ;команду, если нет, то установка RB4 в 1 (чтобы потухло)

; синхронизация PORTB
BCF PORTB,SYN
BSF PORTB,SYN

RRF W2,1 ;сдвиг вправо на 1 бит
DECFSZ CNT_2,1 ;по всем 8 битам
GOTO M03 ;повтор
RETURN

;деление W1 на W
;находим путем последовательного вычитания
;делителя из делимого
;результат: W1 - частное, W - остаток
DIVISION
MOVWF W2 ;сохраним W в W2, т.к. след команда его портит
MOVF W1,0 ;W = W1
MOVWF W3 ;W3 = W = W1 - делимое
MOVF W2,0 ;восстановим W = W2 - делитель
CLRF W1 ;W1 = 0 - частное, как количество вычитаний делителя

;цикл вычитания делителя из делимого
;вычитание заменяется сложением с кодом в дополнительном коде
;т.е. 5-2 = 5+0feh = 3 и С=1
; 1-2 = 1+0feh = 0ffh и C=0
;т.о., C=1 означает, что отнимается, а С=0 - нет

M04 SUBWF W3,1 ;W3 = W3 - W
BTFSC STATUS,C ;проверяем бит переноса, если C = 0, то на выход
GOTO M05 ;на инкремент частного
ADDWF W3,0 ;добавим лишний раз отнятый делитель, результат в W
RETURN ;имеем в W1 частное, а W - остаток

M05 INCF W1,1 ;считаем отнятые делители
GOTO M04 ;продолжаем

;кодировка кода на иникатор
;на входе W = 0-9
;на выходе код
CODE_SEG
ADDWF PCL,1 ;переход на адрес следующей команы + содержимое W
RETLW b'00000011' ;0
RETLW b'10011111' ;1
RETLW b'00100101' ;2
RETLW b'00001101' ;3
RETLW b'10011001' ;4
RETLW b'01001001' ;5
RETLW b'01000001' ;6
RETLW b'00011111' ;7
RETLW b'00000001' ;8
RETLW b'00001001' ;9
; RETURN ;лишнее

;pause
PAUSE ;программная задержка - три вложенных цикла
MOVLW D'155'
MOVWF CNT_2

P00 MOVLW D'100'
MOVWF CNT_3

P01 MOVLW D'2'
MOVWF CNT_4

P02 DECFSZ CNT_4,1
GOTO P02
DECFSZ CNT_3,1

GOTO P01
DECFSZ CNT_2,1
GOTO P00
RETURN
END


Попробуйте и мой код (с прерыванием) тоже
Код:
	LIST	p=16F84
#include <p16f84.inc>

; Биты регистра PORTB
DAT EQU 04h ; бит данных
SYN EQU 05h ; бит синхронизации

CBLOCK 0CH ; блок рабочих регистров
X
WAIT
W1
W2
W3
CNT1
CNT2
W_TEMP
STATUS_TEMP
ENDC

org 00h ; начало исполняемого кода
GOTO START

org 04h ; программа обработки прерываний
MOVWF W_TEMP
MOVF STATUS,W
MOVWF STATUS_TEMP

CLRF TMR0 ;очистка таймера
BCF INTCON,T0IF ;сброс флага прерывания

COMF WAIT,F

MOVF STATUS_TEMP,W
SWAPF W_TEMP,F
SWAPF W_TEMP,W
retfie

; Основная программа
START
; Инициализация PORTB
MOVLW B'11001111' ; настройка порта В

BSF STATUS,RP0 ; выбор банка 1
MOVWF TRISB ; установка RB4, RB5 на вывод

MOVLW B'01110010'
MOVWF OPTION_REG

BCF STATUS,RP0 ; выбор банка 0
;
BSF PORTB,DAT ; установка битов DAT, SYN
BSF PORTB,SYN ; в регистр PORTB

CLRF X ;X = 0
CLRF WAIT ;WAIT = 0

CLRF TMR0
MOVLW B'10100000'
MOVWF INTCON

MAIN ;основной цикл
BTFSS WAIT,0
GOTO MAIN

CALL VYVOD ;рисуем X

COMF WAIT,F

INCF X,F
GOTO MAIN

VYVOD
MOVF X,W
MOVWF W1

MOVLW 4
MOVWF CNT1
DIGITS
MOVLW 10
CALL DIVIDE
CALL CODING
CALL OUT

DECFSZ CNT1,F ; по всем 4 цифрам
GOTO DIGITS

RETURN

;=============================================
; Преобразование BCD -> 7 сегментный код
; получаем в W сегменты индикатора
; 0 - горит
;=============================================
CODING
addwf PCL,F ; W + PC -> PC
retlw b'00000011' ; ABCDEF.. = '0'
retlw b'10011111' ; .BC..... = '1'
retlw b'00100101' ; AB.DE.G. = '2'
retlw b'00001101' ; ABCD..G. = '3'
retlw b'10011001' ; .BC..FG. = '4'
retlw b'01001001' ; A.CD.FG. = '5'
retlw b'01000001' ; A.CDEFG. = '6'
retlw b'00011111' ; ABC..... = '7'
retlw b'00000001' ; ABCDEFG. = '8'
retlw b'00001001' ; ABCD.FG. = '9'

; Подпрограмма вывода
OUT
MOVWF W2 ; сохраним в W2
MOVLW D'8' ; 8 бит
MOVWF CNT2 ; в счетчик CNT2
SEGMENTS
BCF PORTB,DAT ; установка в 0 RB4 (чтобы горело)
BTFSC W2,0 ; если 0 бит в регистре W2 = 0, то пропускаем
BSF PORTB,DAT ; команду, если нет, то установка RB4 в 1 (чтобы потухло)

; синхронизация PORTB
BCF PORTB,SYN
BSF PORTB,SYN

RRF W2,F ; сдвиг вправо, через перенос
DECFSZ CNT2,F ; по всем 8 битам
GOTO SEGMENTS ; переход на метку SEGMENTS

RETURN ; возврат из подпрограммы

DIVIDE
MOVWF W2 ; сохраним в W2
MOVF W1,W
MOVWF W3 ; сохраним в W3
MOVF W2,W
CLRF W1
SUBLOOP
SUBWF W3,F
BTFSC STATUS,C
GOTO DIVRET
INCF W1,F
GOTO SUBLOOP
DIVRET
ADDWF W3,W

RETURN

END

Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Неизвестный
02.12.2010, 09:02
общий
Адресаты:
Хорошо!:) жду блок - схему!:)
давно
Посетитель
7438
7205
02.12.2010, 15:36
общий
Все-таки, моя программа работает? И для какого варианта делаем блок-схему?
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Неизвестный
02.12.2010, 16:27
общий
Адресаты:
Здравствуйте!
Я не знаю, работает ли Ваш вариант работы программы, так как пока не смог попасть в аудиторию.
А так как я степень рабочести Вашего кода пока не знаю, то давайте, пожалуйста, сделаем блок - схему для точно рабочего кода, правда, с программной паузой. Только прошу Вас, чтобы за исходник была взята предложенная мною блок - схема,...с необходимыми дополнениями и изменениями. Спасибо Вам, Игорь Витальевич!
Неизвестный
05.12.2010, 01:30
общий
Адресаты:
Здравствуйте, Игорь Витальевич. Я понимаю, что Вы можете быть очень заняты, но Вы про меня не забыли?
давно
Посетитель
7438
7205
05.12.2010, 18:29
общий
Не забыл, просто, действительно, занят. Жизнь не заканчивается на компьютере...
Обязательно сделаю сегодня, только позже.
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
7438
7205
08.12.2010, 03:29
общий
Добавил наконец-то...
Не забудьте утром посмотреть почту ...
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Неизвестный
08.12.2010, 10:29
общий
Адресаты:
Спасибо Вам преогромное, Игорь Витальевич! . В четверг, я так предполагаю, нам выдадут новое задание по этому же микроконтроллеру. Поможете и с ним? Конечно же, за отдельную оплату.
давно
Посетитель
7438
7205
08.12.2010, 10:35
общий
Куда я денусь
После того, как прополз по этому заданию, будет уже проще
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Неизвестный
09.12.2010, 12:47
общий
Адресаты:
Здравствуйте, Игорь Витальевич! Не знаю, по каких странным причинам,...но Ваш код программы не работает. После работы программатора все сегменты загорелись и сразу потухли, больше ничего не происходит.
давно
Посетитель
7438
7205
09.12.2010, 12:59
общий
Это который с прерыванием? Может быть. Там надо разобраться с этим самым прерыванием. Еще помозгую...
Или, может, не работает Ваш код после моего комментирования ?
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Неизвестный
09.12.2010, 13:18
общий
Адресаты:
Нет, мой код после Вашего комментирования работает, и даже отлично. а не работает та версия, которую изначально Вы предложили.
Однако, мой код, как и раньше было известно, с программной паузой. Сегодня же выяснилось, что надо было именно делать с использованием таймера прерываний. Не могли бы Вы лучше помочь исправить МОЮ версию программы, но удалить там паузу программную, добавить таймер прерываний. Блок - схему, которую мне предложили для подпрограммы таймера прерываний, я Вам покажу. Вы мне с этим поможете, а я создам новый платный вопрос, либо в этом же мини-форуме скажу Вам "отлично 55 руб." спасибо!, ...когда заработает.
давно
Посетитель
7438
7205
09.12.2010, 14:13
общий
Ок, давайте блок-схему таймера. Думаю, поможет разобраться...
Сделаем!
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Неизвестный
10.12.2010, 21:16
общий
Адресаты:
Вот блок - схема:

blok_shema_taimera_2003.doc (98.5 кб)
Неизвестный
13.12.2010, 11:53
общий
Адресаты:
Здравствуйте, Игорь Витальевич! Как для Вас лучше: чтобы я создал новый платный вопрос или сказал Вам "отлично 55 руб. Спасибо" после Вашего ответа?
давно
Посетитель
7438
7205
13.12.2010, 12:07
общий
Пусть будет "Спасибо"...
Надеюсь, сегодня сделаю...
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Неизвестный
13.12.2010, 12:14
общий
Адресаты:
Хорошо, очень - очень жду!
Неизвестный
15.12.2010, 15:44
общий
Адресаты:
Игорь Витальевич, здравствуйте! Сроки меня поджимают, и если у Вас нет времени, то скажите, я буду искать другие способы решения моей проблемы. Спасибо.
давно
Посетитель
7438
7205
15.12.2010, 16:29
общий
Это не Интернет, а черти что...
Вот, накидал...
[code h=200]
LIST p=16F84

TMR0 EQU 01h
OPTION_REG EQU 81h
PCL EQU 02h ;регистр программного счетчика
STATUS EQU 03h ;регистр статуса
PORTB EQU 06h ;порт В
TRISB EQU 86h ;регистр настройки порта В
INTCON EQU 0bh

RP0 EQU 5h ;бит выбора банка (статус)
C EQU 0 ;флаг переноса (статус)
DAT EQU 04h ;бит данных (порт В)
SYN EQU 05h ;бит синхронизации (порт В)
T0IF EQU 2 ;бит сброса прерывания таймера (INTCON)

;программные регистры (переменные)
X EQU 0ch ;выводимое число
W_TEMP EQU 0dh ;для сохранения W
ST_TEMP EQU 0eh ;-//- STATUS-а
COUNT EQU 0fh ;счетчик "пустых" прерываний - предделитель

CNT_1 EQU 10h ;счетчики для преобразований и вывода
CNT_2 EQU 11h
W1 EQU 12h
W2 EQU 13h
W3 EQU 14h

W EQU 0 ;в аккумулятор
F EQU 1 ;в регистр

ORG 0h ;точка входа
GOTO START

org 04h ; программа обработки прерываний
MOVWF W_TEMP ;сохраняем W
MOVF STATUS,W ;и статус
MOVWF ST_TEMP

MOVLW d'12'
MOVWF TMR0 ;загружаем TMR0 = 12

DECFSZ COUNT,F ;COUNT = COUNT - 1, если 0, то на вывод
GOTO EXIT ;иначе на выход

INCF X,1 ;Х = Х + 1
CALL DISPLAY ;рисуем Х

MOVLW d'8'
MOVWF COUNT ;загрузим предделитель

EXIT
MOVF ST_TEMP,W ;восстановим
SWAPF W_TEMP,F
SWAPF W_TEMP,W

BCF INTCON,T0IF ;сброс флага прерывания
RETFIE

START ;начало программы
BSF STATUS,RP0 ;выбор банка 1
BCF TRISB,DAT ;используем на выход бит данных
BCF TRISB,SYN ;и бит синхро

MOVLW B'00000010' ;предделитель 1:8, используем TMR0
MOVWF OPTION_REG

BCF STATUS,RP0 ;банк 0

BSF PORTB,DAT ;установка битов в 1
BSF PORTB,SYN

CLRF X ;начинаем с X = 0

MOVLW d'8'
MOVWF COUNT ;счетчик предварительного делителя

MOVLW d'12'
MOVWF TMR0 ;начальное значение счетчика (считаем 256-12=244 раз)

CALL DISPLAY ;рисуем Х

MOVLW B'10100000'
MOVWF INTCON ;разрешаем прерывания от таймера

;пустой основной цикл
MAIN GOTO MAIN

;вывод числа в регистре Х на дисплей
DISPLAY
MOVLW d'4' ;4 цифры
MOVWF CNT_1 ;CNT_1 - счетчик цифр
MOVF X,0 ;W = X
MOVWF W1 ;W1 = W = X

;цикл вывода десятичных знаков
M01 MOVLW d'10' ;будем делить W1 на 10 и получать в W остаток
CALL DIVISION ; от деления - очередной младший разряд
CALL CODE_SEG ;конвертируем число в сегментный код
CALL OUT_SEG ;зажигаем нужные сегменты
DECFSZ CNT_1,F ;CNT_1 = CNT_1 - 1, если 0, то на RETURN
GOTO M01 ;иначе повторяем
RETURN ;выход

;вывод цифры (отработка сегментов, заданных в регистре W)
OUT_SEG
MOVWF W2 ;W2 = W
MOVLW d'8'
MOVWF CNT_2 ;CNT_2 = 8 - число бит

;цикл по битам
M03 BCF PORTB,DAT ;установка в 0 RB4 (чтобы горело)
BTFSC W2,0 ;если 0 бит в регистре W2 = 0, то пропускаем
BSF PORTB,DAT ;команду, если нет, то установка RB4 в 1 (чтобы потухло)

; синхронизация PORTB
BCF PORTB,SYN
BSF PORTB,SYN

RRF W2,1 ;сдвиг вправо на 1 бит
DECFSZ CNT_2,F ;по всем 8 битам
GOTO M03 ;повтор
RETURN

;деление W1 на W
;находим путем последовательного вычитания
;делителя из делимого
;результат: W1 - частное, W - остаток
DIVISION
MOVWF W2 ;сохраним W в W2, т.к. след команда его портит
MOVF W1,0 ;W = W1
MOVWF W3 ;W3 = W = W1 - делимое
MOVF W2,0 ;восстановим W = W2 - делитель
CLRF W1 ;W1 = 0 - частное, как количество вычитаний делителя

;цикл вычитания делителя из делимого
;вычитание заменяется сложением с кодом в дополнительном коде
;т.е. 5-2 = 5+0feh = 3 и С=1
; 1-2 = 1+0feh = 0ffh и C=0
;т.о., C=1 означает, что отнимается, а С=0 - нет

M04 SUBWF W3,1 ;W3 = W3 - W
BTFSC STATUS,C ;проверяем бит переноса, если C = 0, то на выход
GOTO M05 ;на инкремент частного
ADDWF W3,0 ;добавим лишний раз отнятый делитель, результат в W
RETURN ;имеем в W1 частное, а W - остаток

M05 INCF W1,1 ;считаем отнятые делители
GOTO M04 ;продолжаем

;кодировка кода на иникатор
;на входе W = 0-9
;на выходе код
CODE_SEG
ADDWF PCL,1 ;переход на адрес следующей команы + содержимое W
RETLW b'00000011' ;0
RETLW b'10011111' ;1
RETLW b'00100101' ;2
RETLW b'00001101' ;3
RETLW b'10011001' ;4
RETLW b'01001001' ;5
RETLW b'01000001' ;6
RETLW b'00011111' ;7
RETLW b'00000001' ;8
RETLW b'00001001' ;9

END
[/code]
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Неизвестный
16.12.2010, 10:35
общий
Адресаты:
Добрый день. НЕ работает. Хотя видна стабильность...при каждом запуске выводится число 46 и горит...и всё.
давно
Посетитель
7438
7205
16.12.2010, 10:41
общий
Сразу загорается и горит? Или немного мельтешит? Типа пробегает по промежуточным.
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
7438
7205
16.12.2010, 10:42
общий
Плохо, когда нет возможности самому "пощупать"...
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Неизвестный
16.12.2010, 10:44
общий
Адресаты:
Просто сразу загорается и горит.
давно
Посетитель
7438
7205
16.12.2010, 11:08
общий
Преподавателю не показывали?
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Неизвестный
16.12.2010, 11:15
общий
Адресаты:
Нет, не показывал.
давно
Посетитель
7438
7205
18.12.2010, 03:10
общий
Все-таки покажите, пусть преподаватель скажет, где ошибка...
Мне кажется, я не учел какую-то мелочь... Тяжело писать для процессора, с которым никогда не сталкивался,
и который имеет свои ньюансы...
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа