150C 22 234 ret
1600 235 org 1600h
236 keycall:
1600 C0E0 237 push ACC
1602 E540 238 mov A,01000000b;команда чтение ОЗУ датчиков
1604 90FF0C 239 mov DPTR, #0FF0Ch
1607 F0 240 movx @DPTR, A
1608 A3 241 inc DPTR
1609 E0 242 movx A, @DPTR; ввод кода нажатой клавиши
160A F8 243 mov R0, A
160B E573 244 mov A, 0073h; Текущее значение флага режима
160D B40003 245 cjne A, #0, mp2;Если режим ввода уставки, то вызов ;процедуры по метке
1610 121621 246 lcall install
1613 B40103 247 mp2: cjne A, #1, mp3;Если режим вывода, то вызов ;процедуры по метке
1616 12164D 248 lcall output
1619 B40200 249 mp3: cjne A, #2, endm
250 ; hlt
251 endm:
161C D0E0 252 pop ACC
161E C292 253 clr P1.2
1620 22 254 ret
255 Install:; Объявление процедуры
1621 7400 256 mov A, #0
1623 F573 257 mov 0073h, A; Сброс флага режима
1625 E8 258 mov A, R0
1626 B40E06 259 cjne A, #0Eh, m1; Если клавиша от 1 до 6
1629 9407 260 subb A, #07h; то вычитаем 7, получаем цифру
162B F573 261 mov 0073h, A; записываем новое К
162D C14C 262 ajmp instend
263 m1:
162F B41602 264 cjne A, #16h, m2; Если клавиша 7 - С
1632 8006 265 sjmp m3
1634 9409 266 m2: subb A, #09h; Вычитаем 9, получаем цифру
1636 F573 267 mov 0073h, A; Записываем новое К
1638 C14C 268 ajmp instend
269 m3:
163A B41B02 270 cjne A, #1Bh, m4; Если нажали D - F
163D 8006 271 sjmp m5
163F 940B 272 m4: subb A, #0Bh; Вычитаем 11, получаем цифру
1641 F573 273 mov 0073h, A; Записываем новое К
1643 C14C 274 ajmp instend
275 m5:
1645 B41C04 276 cjne A, #1Ch, instend; Если нажата клавиша 0
1648 7400 277 mov A, #0 ; Формируем 0
164A F573 278 mov 0073h, A; Записываем новое К
279 instend:
164C 22 280 ret ; Возврат из процедуры
Ashling Microsystems - A51 Assembler - Version 3.0.0 12-12-99 PAGE 6
LOC OBJ LINE SOURCE
281
282
283 Output:
164D E570 284 mov A, 0070h; Текущие значения X1 - X4 сигнализации
164F 90FF14 285 mov DPTR, #0FF14h; Адрес регистра со светодиодами
1652 F0 286 movx @DPTR, A
287 ; Вызов процедуры вывода на дисплей
1653 E571 288 mov A,0071h; A:=Q4
1655 75F00A 289 mov b,#10
1658 84 290 div ab; a:=a div b; b:=a mod b
1659 F8 291 mov R0,A
165A C0E0 292 push ACC
165C E580 293 mov A,10000000b;1-ый символ дисплея
165E 90FF0C 294 mov DPTR, #0FF0Ch
1661 F0 295 movx @DPTR, A
1662 D0E0 296 pop ACC
1664 90FF0D 297 mov DPTR, #0FF0Dh
1667 F0 298 movx @DPTR, A
1668 D083 299 pop DPH
166A D082 300 pop DPL
166C E8 301 mov A, R0
166D C0E0 302 push ACC
166F E581 303 mov A,10000001b;2-ой символ дисплея
1671 90FF0C 304 mov DPTR, #0FF0Ch
1674 F0 305 movx @DPTR, A
1675 22 306 ret
307 end
Ashling Microsystems - A51 Assembler - Version 3.0.0 12-12-99 PAGE 7
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.