📄 bjdj_4.lst
字号:
01FB 2FE4 MOV R30,R20
01FC 27FF CLR R31
01FD 0FE8 ADD R30,R24
01FE 1FF9 ADC R31,R25
01FF 80A0 LDD R10,0+Z
(0096) ZLG7290_WriteReg(reg,dat);
0200 2D2A MOV R18,R10
0201 2D0C MOV R16,R12
0202 DF44 RCALL _ZLG7290_WriteReg
0203 9563 INC R22
0204 3068 CPI R22,0x8
0205 F388 BCS 0x01F7
(0097) }
(0098) delay1(50);
0206 E302 LDI R16,0x32
0207 E010 LDI R17,0
0208 DFB0 RCALL _delay1
0209 9543 INC R20
020A 3140 CPI R20,0x10
020B F348 BCS 0x01F5
(0099) }
(0100) }
020C 9660 ADIW R28,0x10
020D 940E040C CALL pop_gset4
020F 9508 RET
_Test_Download:
f --> R20
dp --> R22
dat --> R10
x --> R12
0210 940E03FE CALL push_gset4
0212 9723 SBIW R28,3
(0101)
(0102) /*
(0103) 函数:Test_Download()
(0104) 功能:测试下载数据功能
(0105) */
(0106) void Test_Download()
(0107) {
(0108) uchar x;
(0109) uchar dp;
(0110) uchar f;
(0111) uchar dat;
(0112) //点亮所有数码管
(0113) dp = 1;
0213 E061 LDI R22,1
(0114) f= 0;
0214 2744 CLR R20
(0115) dat = 8;
0215 E088 LDI R24,0x8
0216 2EA8 MOV R10,R24
(0116) for ( x=0; x<8; x++ )
0217 24CC CLR R12
0218 C006 RJMP 0x021F
(0117) {
(0118) ZLG7290_Download(x,dp,f,dat);
0219 82AA STD R10,2+Y
021A 8348 STD R20,0+Y
021B 2F26 MOV R18,R22
021C 2D0C MOV R16,R12
021D DF6F RCALL _ZLG7290_Download
021E 94C3 INC R12
021F 2D8C MOV R24,R12
0220 3088 CPI R24,0x8
0221 F3B8 BCS 0x0219
(0119) }
(0120) delay1(100);
0222 E604 LDI R16,0x64
0223 E010 LDI R17,0
0224 DF94 RCALL _delay1
(0121) //依次显示所有字型
(0122) dp = 0;
0225 2766 CLR R22
(0123) f = 0;
0226 2744 CLR R20
(0124) for ( dat=0; dat<32; dat++ )
0227 24AA CLR R10
0228 C00F RJMP 0x0238
(0125) {
(0126) for ( x=0; x<8; x++ )
0229 24CC CLR R12
022A C006 RJMP 0x0231
(0127) {
(0128) ZLG7290_Download(x,dp,f,dat);
022B 82AA STD R10,2+Y
022C 8348 STD R20,0+Y
022D 2F26 MOV R18,R22
022E 2D0C MOV R16,R12
022F DF5D RCALL _ZLG7290_Download
0230 94C3 INC R12
0231 2D8C MOV R24,R12
0232 3088 CPI R24,0x8
0233 F3B8 BCS 0x022B
(0129) }
(0130) delay1(50);
0234 E302 LDI R16,0x32
0235 E010 LDI R17,0
0236 DF82 RCALL _delay1
0237 94A3 INC R10
0238 2D8A MOV R24,R10
0239 3280 CPI R24,0x20
023A F370 BCS 0x0229
(0131) }
(0132) }
023B 9623 ADIW R28,3
023C 940E040C CALL pop_gset4
023E 9508 RET
_Test_ScanNum:
x --> R20
023F 940E03DF CALL push_gset1
0241 9723 SBIW R28,3
(0133)
(0134) /*
(0135) 函数:Test_ScanNum()
(0136) 功能:测试不同扫描位数
(0137) 说明:扫描位数越少,数码管就越亮
(0138) */
(0139) void Test_ScanNum()
(0140) {
(0141) uchar x;
(0142) for ( x=0; x<8; x++ )
0242 2744 CLR R20
0243 C008 RJMP 0x024C
(0143) {
(0144) ZLG7290_Download(x,1,0,8);
0244 E088 LDI R24,0x8
0245 838A STD R24,2+Y
0246 2422 CLR R2
0247 8228 STD R2,0+Y
0248 E021 LDI R18,1
0249 2F04 MOV R16,R20
024A DF42 RCALL _ZLG7290_Download
024B 9543 INC R20
024C 3048 CPI R20,0x8
024D F3B0 BCS 0x0244
(0145) }
(0146) delay1(100);
024E E604 LDI R16,0x64
024F E010 LDI R17,0
0250 DF68 RCALL _delay1
(0147) for ( x=0; x<8; x++ )
0251 2744 CLR R20
0252 C007 RJMP 0x025A
(0148) {
(0149) ZLG7290_WriteReg(ZLG7290_ScanNum,x);
0253 2F24 MOV R18,R20
0254 E00D LDI R16,0xD
0255 DEF1 RCALL _ZLG7290_WriteReg
(0150) delay(100);
0256 E604 LDI R16,0x64
0257 E010 LDI R17,0
0258 DE20 RCALL _delay
0259 9543 INC R20
025A 3048 CPI R20,0x8
025B F3B8 BCS 0x0253
(0151) }
(0152) }
025C 9623 ADIW R28,3
025D 940E03E2 CALL pop_gset1
025F 9508 RET
_Test_Flash:
dat --> R20
x --> R22
0260 940E03F6 CALL push_gset2
0262 9723 SBIW R28,3
(0153)
(0154) /*
(0155) 函数:Test_Flash()
(0156) 功能:测试闪烁功能
(0157) */
(0158) void Test_Flash()
(0159) {
(0160) uchar dat = 0x01;
0263 E041 LDI R20,1
(0161) uchar x;
(0162) //显示01234567
(0163) for ( x=0; x<8; x++ )
0264 2766 CLR R22
0265 C007 RJMP 0x026D
(0164) {
(0165) ZLG7290_Download(x,0,0,x);
0266 836A STD R22,2+Y
0267 2422 CLR R2
0268 8228 STD R2,0+Y
0269 2722 CLR R18
026A 2F06 MOV R16,R22
026B DF21 RCALL _ZLG7290_Download
026C 9563 INC R22
026D 3068 CPI R22,0x8
026E F3B8 BCS 0x0266
(0166) }
(0167) //设置闪烁控制寄存器
(0168) ZLG7290_WriteReg(ZLG7290_FlashOnOff,0x11);
026F E121 LDI R18,0x11
0270 E00C LDI R16,0xC
0271 DED5 RCALL _ZLG7290_WriteReg
(0169) //闪烁演示
(0170) for ( x=0; x<8; x++ )
0272 2766 CLR R22
0273 C008 RJMP 0x027C
(0171) {
(0172) ZLG7290_Flash(dat);
0274 2F24 MOV R18,R20
0275 E700 LDI R16,0x70
0276 DEF4 RCALL _ZLG7290_cmd
(0173) dat <<= 1;
0277 0F44 LSL R20
(0174) delay1(300);
0278 E20C LDI R16,0x2C
0279 E011 LDI R17,1
027A DF3E RCALL _delay1
027B 9563 INC R22
027C 3068 CPI R22,0x8
027D F3B0 BCS 0x0274
(0175) }
(0176) //数码管的8个位一起闪烁
(0177) ZLG7290_Flash(0xFF);
027E EF2F LDI R18,0xFF
027F E700 LDI R16,0x70
0280 DEEA RCALL _ZLG7290_cmd
(0178) delay1(350);
0281 E50E LDI R16,0x5E
0282 E011 LDI R17,1
0283 DF35 RCALL _delay1
(0179) //停止闪烁
(0180) ZLG7290_Flash(0x00);
0284 2722 CLR R18
0285 E700 LDI R16,0x70
0286 DEE4 RCALL _ZLG7290_cmd
(0181) delay1(50);
0287 E302 LDI R16,0x32
0288 E010 LDI R17,0
0289 DF2F RCALL _delay1
(0182) }
028A 9623 ADIW R28,3
028B 940E0406 CALL pop_gset2
028D 9508 RET
_Test_SegOnOff:
seg --> R20
028E 940E03DF CALL push_gset1
(0183)
(0184) /*
(0185) 函数:Test_SegOnOff()
(0186) 功能:测试段寻址功能
(0187) */
(0188) void Test_SegOnOff()
(0189) {
(0190) uchar seg;
(0191) ClearAll();
0290 DF41 RCALL _ClearAll
(0192) delay1(100);
0291 E604 LDI R16,0x64
0292 E010 LDI R17,0
0293 DF25 RCALL _delay1
(0193) for ( seg=0; seg<64; seg++ )
0294 2744 CLR R20
0295 C007 RJMP 0x029D
(0194) {
(0195) ZLG7290_SegOnOff(seg,1);
0296 E021 LDI R18,1
0297 2F04 MOV R16,R20
0298 DEE6 RCALL _ZLG7290_SegOnOff
(0196) delay1(30);
0299 E10E LDI R16,0x1E
029A E010 LDI R17,0
029B DF1D RCALL _delay1
029C 9543 INC R20
029D 3440 CPI R20,0x40
029E F3B8 BCS 0x0296
(0197) }
(0198) delay1(100);
029F E604 LDI R16,0x64
02A0 E010 LDI R17,0
02A1 DF17 RCALL _delay1
(0199) for ( seg=0; seg<64; seg++ )
02A2 2744 CLR R20
02A3 C007 RJMP 0x02AB
(0200) {
(0201) ZLG7290_SegOnOff(seg,0);
02A4 2722 CLR R18
02A5 2F04 MOV R16,R20
02A6 DED8 RCALL _ZLG7290_SegOnOff
(0202) delay1(30);
02A7 E10E LDI R16,0x1E
02A8 E010 LDI R17,0
02A9 DF0F RCALL _delay1
02AA 9543 INC R20
02AB 3440 CPI R20,0x40
02AC F3B8 BCS 0x02A4
(0203) }
(0204) delay1(100);
02AD E604 LDI R16,0x64
02AE E010 LDI R17,0
02AF DF09 RCALL _delay1
(0205) }
02B0 940E03E2 CALL pop_gset1
02B2 9508 RET
_DispValue:
d --> R20
dat --> R22
02B3 940E03F6 CALL push_gset2
02B5 01B8 MOVW R22,R16
02B6 9723 SBIW R28,3
(0206)
(0207) /*
(0208) 函数:DispValue()
(0209) 功能:显示100以内的数值
(0210) 参数:
(0211) x:显示位置,取值0~6
(0212) dat:要显示的数据,取值0~99
(0213) */
(0214) void DispValue( uint dat)//uchar x,
(0215) {
(0216) uint d;
(0217) //delay(1);
(0218) //delay(1);
(0219) //delay(1);
(0220) d = dat%1000/100;
02B7 EE28 LDI R18,0xE8
02B8 E033 LDI R19,3
02B9 018B MOVW R16,R22
02BA 940E03B3 CALL mod16u
02BC E624 LDI R18,0x64
02BD E030 LDI R19,0
02BE 940E03B5 CALL div16u
02C0 01A8 MOVW R20,R16
(0221) ZLG7290_Download(0,0,0,d);
02C1 834A STD R20,2+Y
02C2 2422 CLR R2
02C3 8228 STD R2,0+Y
02C4 2722 CLR R18
02C5 2700 CLR R16
02C6 DEC6 RCALL _ZLG7290_Download
(0222) d = dat%100/10;
02C7 E624 LDI R18,0x64
02C8 E030 LDI R19,0
02C9 018B MOVW R16,R22
02CA 940E03B3 CALL mod16u
02CC E02A LDI R18,0xA
02CD E030 LDI R19,0
02CE 940E03B5 CALL div16u
02D0 01A8 MOVW R20,R16
(0223) ZLG7290_Download(1,0,0,d);
02D1 834A STD R20,2+Y
02D2 2422 CLR R2
02D3 8228 STD R2,0+Y
02D4 2722 CLR R18
02D5 E001 LDI R16,1
02D6 DEB6 RCALL _ZLG7290_Download
(0224)
(0225) d = dat%10;
02D7 E02A LDI R18,0xA
02D8 E030 LDI R19,0
02D9 018B MOVW R16,R22
02DA 940E03B3 CALL mod16u
02DC 01A8 MOVW R20,R16
(0226) ZLG7290_Download(2,0,0,d);
02DD 834A STD R20,2+Y
02DE 2422 CLR R2
02DF 8228 STD R2,0+Y
02E0 2722 CLR R18
02E1 E002 LDI R16,2
02E2 DEAA RCALL _ZLG7290_Download
(0227)
(0228)
(0229) }
02E3 9623 ADIW R28,3
02E4 940E0406 CALL pop_gset2
02E6 9508 RET
_DispHexValue:
d --> R22
dat --> R10
x --> R20
02E7 940E03FA CALL push_gset3
02E9 2EA2 MOV R10,R18
02EA 2F40 MOV R20,R16
02EB 9723 SBIW R28,3
(0230)
(0231) /*
(0232) 函数:DispHexValue()
(0233) 功能:以16进制方式显示数值
(0234) 参数:
(0235) x:显示位置,取值0~6
(0236) dat:要显示的数据,取值0~255
(0237) */
(0238) void DispHexValue(uchar x, uchar dat)
(0239) {
(0240) uchar d;
(0241) d = dat / 16;
02EC E110 LDI R17,0x10
02ED 2D0A MOV R16,R10
02EE 940E03A1 CALL div8u
02F0 2F60 MOV R22,R16
(0242) ZLG7290_Download(x,0,0,d);
02F1 836A STD R22,2+Y
02F2 2422 CLR R2
02F3 8228 STD R2,0+Y
02F4 2722 CLR R18
02F5 2F04 MOV R16,R20
02F6 DE96 RCALL _ZLG7290_Download
(0243) d = dat - d * 16;
02F7 E180 LDI R24,0x10
02F8 9F86 MUL R24,R22
02F9 2D6A MOV R22,R10
02FA 1960 SUB R22,R0
(0244) ZLG7290_Download(x+1,0,0,d);
02FB 836A STD R22,2+Y
02FC 2422 CLR R2
02FD 8228 STD R2,0+Y
02FE 2722 CLR R18
02FF 2F04 MOV R16,R20
0300 5F0F SUBI R16,0xFF
0301 DE8B RCALL _ZLG7290_Download
(0245) }
0302 9623 ADIW R28,3
0303 940E0409 CALL pop_gset3
0305 9508 RET
_Test_Key:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -