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

📄 ex9-4.sdi

📁 《单片机原理实用教程——基于Proteus虚拟仿真》一书的配套光盘
💻 SDI
字号:
000B,,,        DIN   BIT  P3.5    ;定义I/O口
000B,,,        LOAD  BIT  P3.6
000B,,,        CLK   BIT  P3.7
,,,        ORG 0000H         ;复位入口
0000,02 00 30,,        LJMP MAIN
,,,        ORG 0030H         ;主程序起始地址
0030,75 81 60,MAIN,MAIN:   MOV SP,#60H       ;设置堆栈指针
0033,7F 0A,,            MOV R7,#0AH       ;亮度寄存器
0035,7D 07,,        MOV R5,#07H       ;亮度值
0037,12 00 6E,,        LCALL DINPUT      ;调用7219命令写入子程序
003A,7F 0B,,        MOV R7,#0BH       ;扫描界限寄存器
003C,7D 07,,        MOV R5,#07H       ;显示8位数字
003E,12 00 6E,,        LCALL DINPUT      ;调MAX7219命令写入子程序
0041,7F 09,,        MOV R7,#09H       ;译码方式寄存器
0043,7D FF,,        MOV R5,#0FFH      ;#FFH=7-0位均译为B码,#00=不译码
0045,12 00 6E,,        LCALL DINPUT      ;调MAX7219命令写入子程序
0048,7F 0C,,        MOV R7,#0CH       ;停机寄存器
004A,7D 01,,        MOV R5,#01H       ;正常工作
004C,12 00 6E,,        LCALL DINPUT      ;调MAX7219命令写入子程序
004F,75 30 FF,,        MOV 30H,#0FFH     ;30H-37H为显示缓冲区
0052,75 31 FF,,        MOV 31H,#0FFH
0055,75 32 08,,        MOV 32H,#08H      ;显示..8051..
0058,75 33 00,,        MOV 33H,#00H
005B,75 34 05,,        MOV 34H,#05H
005E,75 35 01,,        MOV 35H,#01H
0061,75 36 FF,,        MOV 36H,#0FFH
0064,75 37 FF,,        MOV 37H,#0FFH
0067,7F 30,,        MOV R7,#30H
0069,12 00 8B,,        LCALL DISPLY      ;调MAX7219显示子程序
006C,80 FE,,        SJMP $
006E,EF,DINPUT,DINPUT: MOV A,R7          ;7219命令写入子程序,传递来的第1个参数保存在R7中
006F,7A 08,,        MOV R2,#08        ;作为Max7219控制寄存器的8位地址值
0071,33,LOOP1,LOOP1:  RLC A             ;A的D7位移至DIN,依次为D6~D0
0072,92 B5,,        MOV DIN, C        ;8位地址输入DIN
0074,C2 B7,,        CLR CLK
0076,D2 B7,,        SETB CLK
0078,DA F7,,        DJNZ R2,LOOP1
007A,ED,,        MOV A,R5          ;传递来的第2个参数保存在R5中
007B,7A 08,,        MOV R2,#08        ;作为写入Max7219控制寄存器的8位命令数据值
007D,33,LOOP2,LOOP2:  RLC A             ;A的D7位移至P1.0,依次为D6~D0
007E,92 B5,,        MOV DIN, C        ;8位数据输入DIN
0080,C2 B7,,        CLR CLK
0082,D2 B7,,        SETB CLK
0084,DA F7,,        DJNZ R2,LOOP2
0086,C2 B6,,        CLR LOAD          ;输出LOAD信号,上升沿装载寄存器数据
0088,D2 B6,,        SETB LOAD
008A,22,,        RET
008B,EF,DISPLY,DISPLY: MOV A,R7         ;7219显示子程序,R7的内容为7219显示缓冲区入口地址
008C,F8,,        MOV R0,A        ;R0指向显示缓冲区首地址
008D,79 01,,        MOV R1,#01      ;R1指向8字节显示RAM首地址
008F,7B 08,,        MOV R3,#08
0091,E6,LOOP3,LOOP3:  MOV A,@R0       ;取出显示数据→R5
0092,FD,,        MOV R5,A
0093,E9,,        MOV A,R1        ;取出显示RAM地址→R7
0094,FF,,        MOV R7,A
0095,12 00 6E,,        LCALL DINPUT    ;调MAX7219命令写入子程序
0098,08,,        INC R0
0099,09,,        INC R1
009A,DB F5,,        DJNZ R3,LOOP3
009C,22,,        RET
000E,,,        END

⌨️ 快捷键说明

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