Такая проблема : значит написал простейшую программу динамической
индикации, и она не работает, т.е. пишет постоянно во всех индикаторах
один и тот же знак. Вооюще не понимаю где здесь может быть ошибка :
( Код знака выдается через P0, катоды индикаторов переключаются с помощью
P2.6, P2.7 )
Код
Org 0000h
sjmp START
;Вектор прерывания Int0
Org 0003h
reti
;Вектор прерывания Int1
Org 0013h
reti
;Вектор прерывания таймера T0
Org 000Bh
reti
;Вектор прерывания таймера T1
Org 001Bh
reti
;=========================================
; Начало программы
Org 0040h
START:
;----------
;----------
; начальные установки
mov P0,#00h
mov P1,#00h
mov P2,#00h
mov SP,#45h
mov TMOD,#00010001b
mov TCON,#00h
mov IP,#00h
mov IE,#10001011b
mov PSW,#00001000b; 1 банк регистров
mov R7,#00h; признак - какой индикатор надо включать
l:
mov P2,#00h
cjne R7,#00h,ind1
mov A,#02h
acall indis
setb P2.6
mov R7,#01h
sjmp ind4
ind1:
mov A,#05h
acall indis
setb P2.7
mov R7,#00h
ind4:
sjmp l
indis:
add A,#03h
movc A,@A+PC
mov P0,A
ret
; Таблица символов для индикации
db 01111101b; "0"
db 01100000b; "1"
db 00111110b; "2"
db 01111010b; "3"
db 01101011b; "4"
db 01011011b; "5"
db 01011111b; "6"
db 01110000b; "7"
db 01111111b; "8"
db 01111011b; "9"
db 01111101b; "0"
;-------------------------------------
END
sjmp START
;Вектор прерывания Int0
Org 0003h
reti
;Вектор прерывания Int1
Org 0013h
reti
;Вектор прерывания таймера T0
Org 000Bh
reti
;Вектор прерывания таймера T1
Org 001Bh
reti
;=========================================
; Начало программы
Org 0040h
START:
;----------
;----------
; начальные установки
mov P0,#00h
mov P1,#00h
mov P2,#00h
mov SP,#45h
mov TMOD,#00010001b
mov TCON,#00h
mov IP,#00h
mov IE,#10001011b
mov PSW,#00001000b; 1 банк регистров
mov R7,#00h; признак - какой индикатор надо включать
l:
mov P2,#00h
cjne R7,#00h,ind1
mov A,#02h
acall indis
setb P2.6
mov R7,#01h
sjmp ind4
ind1:
mov A,#05h
acall indis
setb P2.7
mov R7,#00h
ind4:
sjmp l
indis:
add A,#03h
movc A,@A+PC
mov P0,A
ret
; Таблица символов для индикации
db 01111101b; "0"
db 01100000b; "1"
db 00111110b; "2"
db 01111010b; "3"
db 01101011b; "4"
db 01011011b; "5"
db 01011111b; "6"
db 01110000b; "7"
db 01111111b; "8"
db 01111011b; "9"
db 01111101b; "0"
;-------------------------------------
END
Если не сложно подскажите пожалуйста или подкиньте работающий пример.
Заранее спасибо