地址 机器码 指令 注释
0000 02003B LJMP 003B ;跳转至003BH
003B 758000 MOV P0,#00H ;初始化
003E 75900F MOV P1,#0FH ;
0041 75A000 MOV P2,#00H ;
0044 75B000 MOV P3,#00H ;
0047 1203CC LCALL 03CC ;调“嘀嗒”声子程序
004A 758007 MOV P0,#07H ;点亮VD1至VD3作默认指示
004D 20910F JB P1.1,005F ;判断SB2状态
0050 1203F7 LCALL 03F7 ;延时去抖动
0053 209109 JB P1.1,005F ;
0056 1203CC LCALL 03CC ;确认并应答
0059 3091FA JNB P1.1,0056 ;等待SB2释放
005C 020100 LCALL 0100 ;默认进入第一种选择,2灯流动
005F 2090EB JNB P1.0,004D ;判断SB1状态
0062 1203E7 LJLP 03F7 ;去抖动
0065 2090E5 JB P1.0,004D ;
0068 1203CC LCALL 00CC ;确认并应答
006B 3091FA JNB P1.1,0068 ;等待SB1释放
006E 758003 MOV P0,#03H ;点亮VD1和VD2作第二种选择指示
0071 20910F JB P1.1,0083 ;判断SB2状态
0074 1203F7 LCALL 00F7 ;去抖动
0077 209109 JB P1.1,0083 ;
007A 1203CC LCALL 03CC ;确认并应答
007D 3091FA JNB P1.1,007A ;等待SB2释放
0080 020200 LJMP 0200 ;进入第二种选择,4灯流动
0083 2090EB JB P1.0,0071 ;判断SB1状态
0086 1203F7 LCALL 03F7 ;去抖动
0089 2090E5 JB P1.0,0071 ;
008C 1203CC LCALL 03CC ;确认并应答
008F 3091FA JNB P1.1,008C ;等待SB1释放
0092 758001 FOV P0,#01H ;点亮VD1作第一种选择指示
0095 02004D LJMP 004D ;返回判断SB2状态
0100 758003 MOV P0,#03H ;点亮VD1、VD2
0103 1203EF LCALL 03EF ;延时0.1S
0106 75800C MOV P0,#0CH ;熄灭VD1、VD2,点亮VD3、VD4
0109 1203EF LCALL 03EF ;延时0.1S
010C 758030 MOV P0,#30H ;点亮VD5、VD6
010F 1203EF LCALL 03EF ;延时0.1S
0112 7580C0 MOV P0,#C0H ;点亮VD7、VD8
0115 1203EF LCALL 03EF ;延时0.1S
0118 758000 MOV P0,#00H ;熄灭VD7、VD8
011B 75A0C0 MOV P2,#C0H ;点亮VD9、VD10继续流动
011E 1203EF LCALL 03EF ;
0121 75A030 MOV P2,#30H ;
0124 1203EF LCALL 03EF ;
0127 75A00C MOV P2,#0CH ;
012A 1203EF LCALL 03EF ;
012D 75A003 MOV P2,#03H ;
0130 1203EF LCALL 03EF ;
0133 75A000 MOV P2,#00H ;
0136 75B0C0 MOV P3,#C0H ;点亮VD17、VD18继续流动
0139 1203EF LCALL 03EF ;
013C 75B030 MOV P3,#30H ;
013F 1203EF LCALL 03EF ;
0142 75B00C MOV P3,#0CH ;
0145 1203EF LCALL 03EF ;
0148 75B003 MOV P3,#03H ;
014B 1203EF LCALL 03EF ;
014E 75B000 MOV P3,#00H ;
0151 7590CF MOV P1,#CFH ;点亮VD25、VD26继续流动
0154 1203EF LCALL 03EF ;
0157 75903F MOV P1,#3FH ;
015A 1203EF LCALL 03EF ;
015D 75900F MOV P1,#0FH ;
0160 020100 LJMP 0100 ;返回点亮VD1、VD2循环流动
0200 75800F MOV P0,#0FH ;点亮VD1至VD4
0203 1203CC LCALL 03CC ;调“嘀嗒”声延时0.2S
0206 7580F0 MOV P0,#F0H ;继续4灯流动
0209 1203CC LCALL 03CC ;
020C 758000 MOV P0,#00H ;
020F 75A0F0 MOV P2,#F0H ;
0212 1203CC LCALL 03CC ;
0215 75A00F MOV P2,#0FH ;
0218 1203CC LCALL 03CC ;
021B 75A000 MOV P2,#00H ;
021E 75B0F0 MOV P3,#F0H ;
0221 1203CC LCALL 03CC ;
0224 75B00F MOV P3,#0FH ;
0227 1203CC LCALL 03CC ;
022A 75B000 MOV P3,#00H ;
022C 7590FF MOV P1,#FFH ;
0230 1203CC LCALL 03CC ;
0233 75900F MOV P1,#0FH ;
0236 020200 LJMP 0200 ;返回点亮VD1至VD4,循环4灯流动
03CC 7B64 MOV R3,#64H ;设置脉冲周期数100
03CE D292 SETB P1.2 ;使P1.2呈高电位
03DD 1203F7 LCALL 03F7 ;延时0.5ms
03D3 C292 CLR P1.2 ;使P1.2呈低电位
03D5 1203F7 LCALL 03F7 ;延时0.5ms
03D8 DBF4 DJNZ R3,03CE ;循环变换P1.2的高低电位
03DA 7B32 MOV R3,#32H ;设置脉冲周期数50
03DC D292 SETB P1.2 ;使P1.2呈高电位
03DE 1203F7 LCALL 03F7 ;延时0.5ms
03E1 1203F7 LCALL 03F7 ;延时0.5ms
03E4 C292 CLR P1.2 ;使P1.2呈低电位
03E6 1203F7 LCALL 03F7 ;延时0.5ms
03E9 1203F7 LCALL 03F7 ;延时0.5ms
03EC DBEE DJNZ R3,03DC ;延回循环改变P1.2的电位
03EE 22 RET ;子程序返回
03EF 7BC8 MOV R3,#C8H ;置延时常数200
03F1 1203F7 LCALL 03F7 ;延时0.5ms
03F4 DBFB DJNZ P3,03F1 ;循环调用调时程序
03F6 22 RET ;子程序返回
03F7 7A32 MOV R2,#32H ;置延时常数
03F9 00 NOP ;空操作
03FA 00 NOP ;
03FB 00 NOP ;
03FC 00 NOP ;
03FD DAFA DJNZ R2,03F9 ;循环空操作
03FF 22 RET ;子程序返回 |