Для IP 18.119.161.216 доступно:
Реклама
|
Полезные процедуры на ASM-51.
Здесь я выкладываю разные мелкие процедуры для микроконтроллера 8051 и его
аналогов. Если у вас есть свои процедуры, которые можно использовать в различных
программах, присылайте, и я выложу их со ссылкой на автора, конечно на условиях
свободного распостранения.
1. Вывод шеснадцатиричных чисел на LCD:
;--------------HEX to Display-----
hex: mov A,R4 ; В R4 выводимые данные
swap A ; Сначала обрабатываем
anl A,#0Fh ; старшие 4 бита
cjne A,#0Ah,h1 ; Определяем, как пишется
h1: jc h2 ; число (буквой или
add A,#07h ; цифрой)
h2: add A,#30h ;
mov DPTR,#2001h ; DPTR указывает регистр
; данных LCD
movx @DPTR,A ; Вывод символа
mov A,R4 ; Теперь обрабатываем
anl A,#0Fh ; Младшие 4 бита
cjne A,#0Ah,h3 ; Так же проверяем
h3: jc h4 ; цифру или букву
add A,#07h ; и задаём нужное
h4: add A,#30h ; значение A
mov DPTR,#2001h ; DPTR указывает регистр
; данных LCD
movx @DPTR,A ; Вывод символа
ret ; Возврат к программе
|
Эта процедура выводит на экран значение байта в виде шестнадцатиричных чисел.
Сначала берём из регистра предварительно записанное число до вызова процедуры и
обрабатываем так, чтобы остались только десятки. Далее проверяем, выражается число
цифрой (от 0 до 9) или буквой (от A до F). Если выражается цифрой, то происходит
переход на строку h2, и к числу добавляется 30h (для того, чтобы таким образом
сгенерировать код ASCII символа одной из цифер). Если же число выражается буквой,
то сначала добавляем числу 07h, так как в таблице ASCII буквы следуют не сразу
за цифрами, а через 7 символов. Затем мы пишем готовый код ASCII из регистра А
в регистр данных LCD-модуля. (кто не знаком с такими, прочитайте
эти статьи).
После этого нужно заново считать из регистра R4 исходное число (так как мы его
малость изменили) в регистр A и проделать с ним те же действия, за исключением
смены мест младших и старших 4 бит (командой SWAP A), и так же вывести на
LCD-модуль.
Продолжение следует...
К списку статей
ilus
|