📄 counter.sdi
字号:
,,,COUNT EQU 30H ;计数单元
,,,BUF EQU 31H ;显示缓冲区首地址,共2字节
,,, ORG 0
0000,02 00 30,, LJMP START
,,, ORG 3
0003,02 00 B6,, LJMP JS
,,, ORG 30H
0030,75 81 60,START,START: MOV SP,#60H
0033,D2 88,, SETB IT0 ;设INT0为边沿中断
0035,D2 A8,, SETB EX0 ;允许INT0中断
0037,75 30 00,, MOV COUNT,#0 ;计数单元清零
003A,D2 B2,, SETB P3.2 ;设置INT0管脚为输入状态
003C,D2 AF,, SETB EA ;开中断
003E,AE 30,LOOP,LOOP: MOV R6,COUNT ;取计数值
0040,12 00 A5,, LCALL HTOB ;将计数值转换为BCD码
0043,8A 31,, MOV BUF,R2 ;存转换后的计数值
0045,8B 32,, MOV BUF+1,R3
0047,12 00 4C,, LCALL DISP
004A,80 F2,, SJMP LOOP
,,,;显示程序
,,,;将BUF单元的2字节BCD码送数码管显示
004C,78 31,DISP,DISP: MOV R0,#BUF
004E,7A 02,, MOV R2,#2 ;共显示2个字节的BCD码
0050,7B 01,, MOV R3,#1 ;位码初值
0052,E6,, MOV A,@R0
0053,54 0F,, ANL A,#0FH
0055,90 00 94,, MOV DPTR,#DISP_TAB
0058,93,, MOVC A,@A+DPTR
0059,F5 80,, MOV P0,A ;送段码
005B,EB,, MOV A,R3
005C,75 A0 02,, MOV P2,#2
005F,12 00 CD,, LCALL DELAY ;延时1ms
0062,E6,, MOV A,@R0
0063,C4,, SWAP A
0064,54 0F,, ANL A,#0FH
0066,90 00 94,, MOV DPTR,#DISP_TAB
0069,93,, MOVC A,@A+DPTR
006A,F5 80,, MOV P0,A ;送段码
006C,75 A0 01,, MOV P2,#1
006F,12 00 CD,, LCALL DELAY
0072,08,, INC R0
0073,E6,, MOV A,@R0
0074,54 0F,, ANL A,#0FH
0076,90 00 94,, MOV DPTR,#DISP_TAB
0079,93,, MOVC A,@A+DPTR
007A,F5 80,, MOV P0,A ;送段码
007C,EB,, MOV A,R3
007D,75 A0 08,, MOV P2,#8
0080,12 00 CD,, LCALL DELAY ;延时1ms
0083,E6,, MOV A,@R0
0084,C4,, SWAP A
0085,54 0F,, ANL A,#0FH
0087,90 00 94,, MOV DPTR,#DISP_TAB
008A,93,, MOVC A,@A+DPTR
008B,F5 80,, MOV P0,A ;送段码
008D,75 A0 04,, MOV P2,#4
0090,12 00 CD,, LCALL DELAY
0093,22,, RET
0094,C0 F9 A4 B0,DISP_TAB,DISP_TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
009C,80 90 88 83,, DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH
,,,;这是一个将16进制数转换为BCD码的程序
,,,;待转换的16进制数在R6中,转换完的结果在R2R3中
,,,;使用的寄存器A,,B,R6,R2,R3
00A5,EE,HTOB,HTOB: MOV A,R6
00A6,75 F0 64,, MOV B,#100
00A9,84,, DIV AB
00AA,FA,, MOV R2,A
00AB,E5 F0,, MOV A,B
00AD,75 F0 0A,, MOV B,#10
00B0,84,, DIV AB
00B1,C4,, SWAP A
00B2,25 F0,, ADD A,B
00B4,FB,, MOV R3,A
00B5,22,, RET
,,,;计数程序
,,,;计数值为1字节 存在COUNT单元
00B6,C0 D0,JS,JS: PUSH PSW
00B8,C0 E0,, PUSH ACC
00BA,C0 83,, PUSH DPH
00BC,C0 82,, PUSH DPL
00BE,C2 D4,, CLR RS1
00C0,D2 D3,, SETB RS0 ;选择1区工作寄存器
00C2,05 30,, INC COUNT
00C4,D0 82,, POP DPL
00C6,D0 83,, POP DPH
00C8,D0 E0,, POP ACC
00CA,D0 D0,, POP PSW
00CC,32,, RETI
00CD,7E FA,DELAY,DELAY: MOV R6,#250
00CF,00,L1,L1: NOP
00D0,00,, NOP
00D1,DE FC,, DJNZ R6,L1
00D3,22,, RET
000E,,, END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -