📄 test.lst
字号:
(0130) while (digit[4]<2) // 如果计数达到20000就停止
(0131) {
(0132) digit[0]++;
0110 91800069 LDS R24,_digit
0112 5F8F SUBI R24,0xFF
0113 93800069 STS _digit,R24
(0133) if (digit[0]>9)
0115 E089 LDI R24,0x9
0116 90200069 LDS R2,_digit
0118 1582 CP R24,R2
0119 F5B8 BCC 0x0151
(0134) {
(0135) digit[0]=0;
011A 2422 CLR R2
011B 92200069 STS _digit,R2
(0136) digit[1]++;
011D 9180006A LDS R24,_digit+1
011F 5F8F SUBI R24,0xFF
0120 9380006A STS _digit+1,R24
(0137) if (digit[1]>9)
0122 E089 LDI R24,0x9
0123 9020006A LDS R2,_digit+1
0125 1582 CP R24,R2
0126 F550 BCC 0x0151
(0138) {
(0139) digit[1]=0;
0127 2422 CLR R2
0128 9220006A STS _digit+1,R2
(0140) digit[2]++;
012A 9180006B LDS R24,_digit+2
012C 5F8F SUBI R24,0xFF
012D 9380006B STS _digit+2,R24
(0141) if (digit[2]>9)
012F E089 LDI R24,0x9
0130 9020006B LDS R2,_digit+2
0132 1582 CP R24,R2
0133 F4E8 BCC 0x0151
(0142) {
(0143) digit[2]=0;
0134 2422 CLR R2
0135 9220006B STS _digit+2,R2
(0144) digit[3]++;
0137 9180006C LDS R24,_digit+3
0139 5F8F SUBI R24,0xFF
013A 9380006C STS _digit+3,R24
(0145) if (digit[3]>9)
013C E089 LDI R24,0x9
013D 9020006C LDS R2,_digit+3
013F 1582 CP R24,R2
0140 F480 BCC 0x0151
(0146) {
(0147) digit[3]=0;
0141 2422 CLR R2
0142 9220006C STS _digit+3,R2
(0148) digit[4]++;
0144 9180006D LDS R24,0x6D
0146 5F8F SUBI R24,0xFF
0147 9380006D STS 0x6D,R24
(0149) if (digit[4]>9)
0149 E089 LDI R24,0x9
014A 9020006D LDS R2,0x6D
014C 1582 CP R24,R2
014D F418 BCC 0x0151
(0150) {
(0151) digit[4]=0;
014E 2422 CLR R2
014F 9220006D STS 0x6D,R2
(0152) }
(0153) }
(0154) }
(0155) }
(0156) }
(0157) write7279(DECODE0,digit[0]);
0151 91200069 LDS R18,_digit
0153 E800 LDI R16,0x80
0154 D0C8 RCALL _write7279
(0158) if (digit[0]==0)
0155 90200069 LDS R2,_digit
0157 2022 TST R2
0158 F4E1 BNE 0x0175
(0159) {
(0160) write7279(DECODE0+1,digit[1]);
0159 9120006A LDS R18,_digit+1
015B E801 LDI R16,0x81
015C D0C0 RCALL _write7279
(0161) if (digit[1]==0)
015D 9020006A LDS R2,_digit+1
015F 2022 TST R2
0160 F4A1 BNE 0x0175
(0162) {
(0163) write7279(DECODE0+2,digit[2]);
0161 9120006B LDS R18,_digit+2
0163 E802 LDI R16,0x82
0164 D0B8 RCALL _write7279
(0164) if (digit[2]==0)
0165 9020006B LDS R2,_digit+2
0167 2022 TST R2
0168 F461 BNE 0x0175
(0165) {
(0166) write7279(DECODE0+3,digit[3]);
0169 9120006C LDS R18,_digit+3
016B E803 LDI R16,0x83
016C D0B0 RCALL _write7279
(0167) if (digit[3]==0)
016D 9020006C LDS R2,_digit+3
016F 2022 TST R2
0170 F421 BNE 0x0175
(0168) {
(0169) write7279(DECODE0+4,digit[4]);
0171 9120006D LDS R18,0x6D
0173 E804 LDI R16,0x84
0174 D0A8 RCALL _write7279
0175 9180006D LDS R24,0x6D
0177 3082 CPI R24,2
0178 F408 BCC 0x017A
0179 CF96 RJMP 0x0110
(0170) }
(0171) }
(0172) }
(0173) }
(0174) }
(0175) dely_ms(150);
017A E906 LDI R16,0x96
017B E010 LDI R17,0
017C D110 RCALL _dely_ms
(0176) send_byte(CMD_RESET); // 清除显示
017D EA04 LDI R16,0xA4
017E D0B2 RCALL _send_byte
(0177)
(0178) //*************************************************
(0179) // 下载数据但不译码指令测试
(0180) //*************************************************
(0181) write7279(UNDECODE+7,0x49); // 在第8位按不译码方式显示一字符'三'
017F E429 LDI R18,0x49
0180 E907 LDI R16,0x97
0181 D09B RCALL _write7279
(0182) dely_ms(80);
0182 E500 LDI R16,0x50
0183 E010 LDI R17,0
0184 D108 RCALL _dely_ms
(0183)
(0184) //*************************************************
(0185) // 循环左/右移测试
(0186) // "三"字向右运动3次,再向左运动3次
(0187) //*************************************************
(0188) for (j=0;j<23;j++)
0185 2422 CLR R2
0186 92200068 STS _j,R2
0188 C00A RJMP 0x0193
(0189) {
(0190) send_byte(RTR_CYCLE); // 循环右移23次
0189 EA02 LDI R16,0xA2
018A D0A6 RCALL _send_byte
(0191) dely_ms(12);
018B E00C LDI R16,0xC
018C E010 LDI R17,0
018D D0FF RCALL _dely_ms
018E 91800068 LDS R24,_j
0190 5F8F SUBI R24,0xFF
0191 93800068 STS _j,R24
0193 91800068 LDS R24,_j
0195 3187 CPI R24,0x17
0196 F390 BCS 0x0189
(0192) }
(0193) for (j=0;j<23;j++)
0197 2422 CLR R2
0198 92200068 STS _j,R2
019A C00A RJMP 0x01A5
(0194) {
(0195) send_byte(RTL_CYCLE); // 循环左移23次
019B EA03 LDI R16,0xA3
019C D094 RCALL _send_byte
(0196) dely_ms(12);
019D E00C LDI R16,0xC
019E E010 LDI R17,0
019F D0ED RCALL _dely_ms
01A0 91800068 LDS R24,_j
01A2 5F8F SUBI R24,0xFF
01A3 93800068 STS _j,R24
01A5 91800068 LDS R24,_j
01A7 3187 CPI R24,0x17
01A8 F390 BCS 0x019B
(0197) }
(0198)
(0199) //*********************************************
(0200) // 译码方式0及左移指令测试
(0201) //*********************************************
(0202) for (j=0;j<16;j++)
01A9 2422 CLR R2
01AA 92200068 STS _j,R2
01AC C00E RJMP 0x01BB
(0203) {
(0204) send_byte(RTL_UNCYL); // 不循环左移指令
01AD EA01 LDI R16,0xA1
01AE D082 RCALL _send_byte
(0205) write7279(DECODE0,j); // 译码方式0指令,显示在第1位
01AF 91200068 LDS R18,_j
01B1 E800 LDI R16,0x80
01B2 D06A RCALL _write7279
(0206) dely_ms(50);
01B3 E302 LDI R16,0x32
01B4 E010 LDI R17,0
01B5 D0D7 RCALL _dely_ms
01B6 91800068 LDS R24,_j
01B8 5F8F SUBI R24,0xFF
01B9 93800068 STS _j,R24
01BB 91800068 LDS R24,_j
01BD 3180 CPI R24,0x10
01BE F370 BCS 0x01AD
(0207) }
(0208) dely_ms(150);
01BF E906 LDI R16,0x96
01C0 E010 LDI R17,0
01C1 D0CB RCALL _dely_ms
(0209) send_byte(CMD_RESET);
01C2 EA04 LDI R16,0xA4
01C3 D06D RCALL _send_byte
(0210)
(0211) //*********************************************
(0212) // 译码方式1及右移指令测试
(0213) //*********************************************
(0214) for (j=0;j<16;j++)
01C4 2422 CLR R2
01C5 92200068 STS _j,R2
01C7 C00E RJMP 0x01D6
(0215) {
(0216) send_byte(RTR_UNCYL); // 不循环左移指令
01C8 EA00 LDI R16,0xA0
01C9 D067 RCALL _send_byte
(0217) write7279(DECODE1+7,j); // 译码方式0指令,显示在第8位
01CA 91200068 LDS R18,_j
01CC EC0F LDI R16,0xCF
01CD D04F RCALL _write7279
(0218) dely_ms(50);
01CE E302 LDI R16,0x32
01CF E010 LDI R17,0
01D0 D0BC RCALL _dely_ms
01D1 91800068 LDS R24,_j
01D3 5F8F SUBI R24,0xFF
01D4 93800068 STS _j,R24
01D6 91800068 LDS R24,_j
01D8 3180 CPI R24,0x10
01D9 F370 BCS 0x01C8
(0219) }
(0220) dely_ms(150);
01DA E906 LDI R16,0x96
01DB E010 LDI R17,0
01DC D0B0 RCALL _dely_ms
(0221)
(0222) //*********************************************
(0223) // 消隐指令测试
(0224) //*********************************************
(0225) k=0xff;
01DD EF8F LDI R24,0xFF
01DE 93800067 STS _k,R24
(0226) for (j=0;j<6;j++)
01E0 2422 CLR R2
01E1 92200068 STS _j,R2
01E3 C010 RJMP 0x01F4
(0227) {
(0228) k=k/2;
01E4 90200067 LDS R2,_k
01E6 9426 LSR R2
01E7 92200067 STS _k,R2
(0229) write7279(ACTCTL,k); // 每隔一秒钟增加一个消隐位
01E9 2D22 MOV R18,R2
01EA E908 LDI R16,0x98
01EB D031 RCALL _write7279
(0230) dely_ms(100);
01EC E604 LDI R16,0x64
01ED E010 LDI R17,0
01EE D09E RCALL _dely_ms
01EF 91800068 LDS R24,_j
01F1 5F8F SUBI R24,0xFF
01F2 93800068 STS _j,R24
01F4 91800068 LDS R24,_j
01F6 3086 CPI R24,6
01F7 F360 BCS 0x01E4
(0231) }
(0232) write7279(ACTCTL,0xff); // 恢复8位显示
01F8 EF2F LDI R18,0xFF
01F9 E908 LDI R16,0x98
01FA D022 RCALL _write7279
(0233) dely_ms(100);
01FB E604 LDI R16,0x64
01FC E010 LDI R17,0
01FD D08F RCALL _dely_ms
(0234) send_byte(CMD_RESET); // 清除显示
01FE EA04 LDI R16,0xA4
01FF D031 RCALL _send_byte
(0235)
(0236) //**********************************************
(0237) // 段点亮指令和段关闭指令
(0238) //**********************************************
(0239) for (j=0;j<64;j++)
0200 2422 CLR R2
0201 92200068 STS _j,R2
0203 C011 RJMP 0x0215
(0240) {
(0241) write7279(SEGON,j); // 将64个显示段逐个点亮
0204 91200068 LDS R18,_j
0206 EE00 LDI R16,0xE0
0207 D015 RCALL _write7279
(0242) write7279(SEGOFF,j-1); // 同时将前一个显示段关闭
0208 91200068 LDS R18,_j
020A 5021 SUBI R18,1
020B EC00 LDI R16,0xC0
020C D010 RCALL _write7279
(0243) dely_ms(20);
020D E104 LDI R16,0x14
020E E010 LDI R17,0
020F D07D RCALL _dely_ms
0210 91800068 LDS R24,_j
0212 5F8F SUBI R24,0xFF
0213 93800068 STS _j,R24
0215 91800068 LDS R24,_j
0217 3480 CPI R24,0x40
0218 F358 BCS 0x0204
0219 CE40 RJMP 0x005A
(0244) }
(0245) }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -