реклама на сайте
подробности

 
 
> Глюк с AT89C51, Динамическая индикация
AntonBDV88
сообщение Sep 8 2006, 14:50
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 8-09-06
Пользователь №: 20 209



Здравстуйте!!!
Такая проблема : значит написал простейшую программу динамической
индикации, и она не работает, т.е. пишет постоянно во всех индикаторах
один и тот же знак. Вооюще не понимаю где здесь может быть ошибка :
( Код знака выдается через 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


Если не сложно подскажите пожалуйста или подкиньте работающий пример.
Заранее спасибо
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 3rd August 2025 - 10:07
Рейтинг@Mail.ru


Страница сгенерированна за 0.01349 секунд с 7
ELECTRONIX ©2004-2016