⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ex9-8.sdi

📁 《单片机原理实用教程——基于Proteus虚拟仿真》一书的配套光盘
💻 SDI
字号:
,,,
,,,        ORG 0000H
0000,02 00 30,START,START:  LJMP MAIN
,,,        ORG 0013H
0013,02 00 8E,,        LJMP PKEYI
,,,        ORG 0030H
0030,75 81 60,MAIN,MAIN:   MOV SP,#60H                     ;主程序
0033,75 70 00,,        MOV 70H,#00                     ;设置显示缓冲区初值
0036,75 71 01,,        MOV 71H,#01
0039,75 72 02,,        MOV 72H,#02
003C,75 73 03,,        MOV 73H,#03
003F,75 74 04,,        MOV 74H,#04
0042,75 75 05,,        MOV 75H,#05
0045,75 76 06,,        MOV 76H,#06
0048,75 77 07,,        MOV 77H,#07
004B,12 00 53,,        LCALL INI79                     ;调8279初始化子程序
004E,12 00 67,LOOP,LOOP:   LCALL RDIR                      ;调8279显示更新子程序
0051,80 FB,,        SJMP LOOP
,,,
,,,;8279初始化子程序
0053,90 7F FF,INI79,INI79:  MOV   DPTR,#7FFFH               ;8279命令口地址
0056,74 D1,,        MOV   A,#0D1H                   ;清0命令
0058,F0,,        MOVX  @DPTR,A
0059,E0,WNDU,WNDU:   MOVX  A,@DPTR                   ;等待8279清0结束
005A,20 E7 FC,,        JB    ACC.7,WNDU
005D,74 00,,        MOV   A,#00                     ;设置8279为编码扫描方式,两键互锁
005F,F0,,        MOVX  @DPTR,A
0060,74 34,,        MOV   A,#34H                    ;设置8279扫描频率
0062,F0,,        MOVX  @DPTR,A
0063,75 A8 84,,        MOV   IE,#84H                   ;允许8279中断
0066,22,,        RET
,,,
,,,;8279显示更新子程序
0067,90 7F FF,RDIR,RDIR:   MOV   DPTR,#7FFFH               ;8279命令口地址
006A,74 90,,        MOV   A,#90H                    ;写显示RAM命令
006C,F0,,        MOVX  @DPTR,A
006D,78 70,,        MOV   R0,#70H                   ;显示缓冲器首地址→R0
006F,7F 08,,        MOV   R7,#8
0071,90 7E FF,,        MOV   DPTR,#7EFFH
0074,E6,RDLO,RDLO:   MOV   A,@R0                     ;取显示数据
0075,24 05,,        ADD   A,#5                      ;加偏移量
0077,83,,        MOVC  A,@A+PC                   ;查表转换为段码数据
0078,F0,,        MOVX  @DPTR,A
0079,08,,        INC   R0
007A,DF F8,,        DJNZ  R7,RDLO
007C,22,,        RET
007D,3F 06 5B 4F,SEG,SEG:    DB 3fH,06H,5BH,4FH              ;段码表
0081,66 6D 7D 07,,        DB 66H,6DH,7DH,07H
0085,7F 6F 77 7C,,        DB 7FH,6FH,77H,7CH
0089,39 5E 79 71,,        DB 39H,5EH,79H,71H
008D,00,,        DB 00H
,,,
,,,;8279按键输入中断服务程序
008E,C0 D0,PKEYI,PKEYI:  PUSH  PSW
0090,C0 82,,        PUSH  DPL
0092,C0 83,,        PUSH  DPH
0094,C0 E0,,        PUSH  ACC
0096,C0 F0,,        PUSH  B
0098,D2 D3,,        SETB  PSW.3                     ;选工作寄存器1区
009A,90 7F FF,,        MOV   DPTR,#7FFFH               ;8279命令口地址
009D,E0,,        MOVX  A,@DPTR                   ;读FIFO状态字
009E,54 0F,,        ANL   A,#0FH
00A0,60 26,,        JZ    PKYR                      ;判FIFO中是否有数据?
00A2,74 40,,        MOV   A,#40H                    ;读FIFO命令
00A4,F0,,        MOVX  @DPTR,A
00A5,90 7E FF,,        MOV   DPTR,#7EFFH               ;8279数据口地址
00A8,E0,,        MOVX  A,@DPTR                   ;读数据
00A9,FA,,        MOV   R2,A
00AA,54 38,,        ANL   A,#38H                    ;计算键值
00AC,03,,        RR    A
00AD,03,,        RR    A
00AE,03,,        RR    A
00AF,75 F0 04,,        MOV   B,#04H
00B2,A4,,        MUL   AB
00B3,CA,,        XCH   A,R2
00B4,54 07,,        ANL   A,#7
00B6,2A,,        ADD   A,R2
00B7,F5 70,,        MOV 70H,A
00B9,75 71 10,,        MOV 71H,#16
00BC,75 72 10,,        MOV 72H,#16
00BF,75 73 10,,        MOV 73H,#16
00C2,75 74 10,,        MOV 74H,#16
00C5,75 75 10,,        MOV 75H,#16
00C8,D0 F0,PKYR,PKYR:   POP   B
00CA,D0 E0,,        POP   ACC
00CC,D0 83,,        POP   DPH
00CE,D0 82,,        POP   DPL
00D0,D0 D0,,        POP   PSW
00D2,32,,        RETI
,,,
000E,,,END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -