📄 wx_mn.lst
字号:
031E BF8F OUT P3F,R24
031F 9199 LD R25,Y+
0320 9189 LD R24,Y+
0321 9518 RETI
_delay1:
x --> R20
y --> R22
t --> R16
0322 940E053B CALL push_gset2
(0035) /*
(0036) 函数:delay1()
(0037) 功能:延时10ms~655.36s
(0038) 参数:
(0039) t>0时,延时(t*0.01)s
(0040) t=0时,延时655.36s
(0041) 说明:
(0042) 晶振采用8.31MHz
(0043) */
(0044) void delay1(uint t)
(0045) {
(0046) uint x,y;
(0047) for(x=t;x>0;x--)
0324 01A8 MOVW R20,R16
0325 C00A RJMP 0x0330
(0048) for(y=1200;y>0;y--);
0326 EB60 LDI R22,0xB0
0327 E074 LDI R23,4
0328 C002 RJMP 0x032B
0329 5061 SUBI R22,1
032A 4070 SBCI R23,0
032B 3060 CPI R22,0
032C 0767 CPC R22,R23
032D F7D9 BNE 0x0329
032E 5041 SUBI R20,1
032F 4050 SBCI R21,0
0330 3040 CPI R20,0
0331 0745 CPC R20,R21
0332 F799 BNE 0x0326
(0049) }
0333 940E054B CALL pop_gset2
0335 9508 RET
(0050)
(0051) /*
(0052) 函数:SystemInit()
(0053) 功能:系统初始化
(0054) */
(0055) void SystemInit()
(0056) {
(0057) TWI_init();
_SystemInit:
0336 DEBF RCALL _TWI_init
(0058) interrupt_init();
0337 DFD4 RCALL _interrupt_init
(0059) delay1(30); //等待ZLG7290复位完毕
0338 E10E LDI R16,0x1E
0339 E010 LDI R17,0
(0060) }
033A CFE7 RJMP _delay1
_ClearAll:
x --> R20
033B 940E0524 CALL push_gset1
033D 9723 SBIW R28,3
(0061)
(0062) /*
(0063) 函数:ClearAll()
(0064) 功能:清除所有显示
(0065) */
(0066) void ClearAll()
(0067) {
(0068) uchar x;
(0069) for ( x=0; x<8; x++ )
033E 2744 CLR R20
033F C008 RJMP 0x0348
(0070) {
(0071) ZLG7290_Download(x,0,0,31);
0340 E18F LDI R24,0x1F
0341 838A STD R24,2+Y
0342 2422 CLR R2
0343 8228 STD R2,0+Y
0344 2722 CLR R18
0345 2F04 MOV R16,R20
0346 DFAF RCALL _ZLG7290_Download
0347 9543 INC R20
0348 3048 CPI R20,0x8
0349 F3B0 BCS 0x0340
(0072) }
(0073) }
034A 9623 ADIW R28,3
034B 940E0527 CALL pop_gset1
034D 9508 RET
_Test_DispBuf:
DispDat --> Y+0
n --> R20
dat --> R10
reg --> R12
x --> R22
034E 940E0543 CALL push_gset4
0350 9760 SBIW R28,0x10
(0074)
(0075) /*
(0076) 函数:Test_DispBuf()
(0077) 功能:测试直接写显存
(0078) */
(0079) void Test_DispBuf()
(0080) {
(0081) uchar DispDat[16] =
(0082) {//字母AbCdEFgHiJkLoPqr的字形数据
0351 E88C LDI R24,0x8C
0352 E090 LDI R25,0
0353 01FE MOVW R30,R28
0354 E100 LDI R16,0x10
0355 E010 LDI R17,0
0356 93FA ST R31,-Y
0357 93EA ST R30,-Y
0358 939A ST R25,-Y
0359 938A ST R24,-Y
035A 940E0557 CALL asgncblk
(0083) 0xEE,0x3E,0x9C,0x7A,0x9E,0x8E,0xF6,0x6E,
(0084) 0x20,0x70,0x0E,0x1C,0x3A,0xCE,0xE6,0x0A
(0085) };
(0086) uchar n;
(0087) uchar x;
(0088) uchar reg;
(0089) uchar dat;
(0090) for ( n=0; n<16; n++ )
035C 2744 CLR R20
035D C015 RJMP 0x0373
(0091) {
(0092) for ( x=0; x<8; x++ )
035E 2766 CLR R22
035F C00D RJMP 0x036D
(0093) {
(0094) reg = ZLG7290_DpRam + x;
0360 2F86 MOV R24,R22
0361 5F80 SUBI R24,0xF0
0362 2EC8 MOV R12,R24
(0095) dat = DispDat[n];
0363 01CE MOVW R24,R28
0364 2FE4 MOV R30,R20
0365 27FF CLR R31
0366 0FE8 ADD R30,R24
0367 1FF9 ADC R31,R25
0368 80A0 LDD R10,0+Z
(0096) ZLG7290_WriteReg(reg,dat);
0369 2D2A MOV R18,R10
036A 2D0C MOV R16,R12
036B DF44 RCALL _ZLG7290_WriteReg
036C 9563 INC R22
036D 3068 CPI R22,0x8
036E F388 BCS 0x0360
(0097) }
(0098) delay1(50);
036F E302 LDI R16,0x32
0370 E010 LDI R17,0
0371 DFB0 RCALL _delay1
0372 9543 INC R20
0373 3140 CPI R20,0x10
0374 F348 BCS 0x035E
(0099) }
(0100) }
0375 9660 ADIW R28,0x10
0376 940E0551 CALL pop_gset4
0378 9508 RET
_Test_Download:
f --> R20
dp --> R22
dat --> R10
x --> R12
0379 940E0543 CALL push_gset4
037B 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;
037C E061 LDI R22,1
(0114) f= 0;
037D 2744 CLR R20
(0115) dat = 8;
037E E088 LDI R24,0x8
037F 2EA8 MOV R10,R24
(0116) for ( x=0; x<8; x++ )
0380 24CC CLR R12
0381 C006 RJMP 0x0388
(0117) {
(0118) ZLG7290_Download(x,dp,f,dat);
0382 82AA STD R10,2+Y
0383 8348 STD R20,0+Y
0384 2F26 MOV R18,R22
0385 2D0C MOV R16,R12
0386 DF6F RCALL _ZLG7290_Download
0387 94C3 INC R12
0388 2D8C MOV R24,R12
0389 3088 CPI R24,0x8
038A F3B8 BCS 0x0382
(0119) }
(0120) delay1(100);
038B E604 LDI R16,0x64
038C E010 LDI R17,0
038D DF94 RCALL _delay1
(0121) //依次显示所有字型
(0122) dp = 0;
038E 2766 CLR R22
(0123) f = 0;
038F 2744 CLR R20
(0124) for ( dat=0; dat<32; dat++ )
0390 24AA CLR R10
0391 C00F RJMP 0x03A1
(0125) {
(0126) for ( x=0; x<8; x++ )
0392 24CC CLR R12
0393 C006 RJMP 0x039A
(0127) {
(0128) ZLG7290_Download(x,dp,f,dat);
0394 82AA STD R10,2+Y
0395 8348 STD R20,0+Y
0396 2F26 MOV R18,R22
0397 2D0C MOV R16,R12
0398 DF5D RCALL _ZLG7290_Download
0399 94C3 INC R12
039A 2D8C MOV R24,R12
039B 3088 CPI R24,0x8
039C F3B8 BCS 0x0394
(0129) }
(0130) delay1(50);
039D E302 LDI R16,0x32
039E E010 LDI R17,0
039F DF82 RCALL _delay1
03A0 94A3 INC R10
03A1 2D8A MOV R24,R10
03A2 3280 CPI R24,0x20
03A3 F370 BCS 0x0392
(0131) }
(0132) }
03A4 9623 ADIW R28,3
03A5 940E0551 CALL pop_gset4
03A7 9508 RET
_Test_ScanNum:
x --> R20
03A8 940E0524 CALL push_gset1
03AA 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++ )
03AB 2744 CLR R20
03AC C008 RJMP 0x03B5
(0143) {
(0144) ZLG7290_Download(x,1,0,8);
03AD E088 LDI R24,0x8
03AE 838A STD R24,2+Y
03AF 2422 CLR R2
03B0 8228 STD R2,0+Y
03B1 E021 LDI R18,1
03B2 2F04 MOV R16,R20
03B3 DF42 RCALL _ZLG7290_Download
03B4 9543 INC R20
03B5 3048 CPI R20,0x8
03B6 F3B0 BCS 0x03AD
(0145) }
(0146) delay1(100);
03B7 E604 LDI R16,0x64
03B8 E010 LDI R17,0
03B9 DF68 RCALL _delay1
(0147) for ( x=0; x<8; x++ )
03BA 2744 CLR R20
03BB C007 RJMP 0x03C3
(0148) {
(0149) ZLG7290_WriteReg(ZLG7290_ScanNum,x);
03BC 2F24 MOV R18,R20
03BD E00D LDI R16,0xD
03BE DEF1 RCALL _ZLG7290_WriteReg
(0150) delay(100);
03BF E604 LDI R16,0x64
03C0 E010 LDI R17,0
03C1 DE20 RCALL _delay
03C2 9543 INC R20
03C3 3048 CPI R20,0x8
03C4 F3B8 BCS 0x03BC
(0151) }
(0152) }
03C5 9623 ADIW R28,3
03C6 940E0527 CALL pop_gset1
03C8 9508 RET
_Test_Flash:
dat --> R20
x --> R22
03C9 940E053B CALL push_gset2
03CB 9723 SBIW R28,3
(0153)
(0154) /*
(0155) 函数:Test_Flash()
(0156) 功能:测试闪烁功能
(0157) */
(0158) void Test_Flash()
(0159) {
(0160) uchar dat = 0x01;
03CC E041 LDI R20,1
(0161) uchar x;
(0162) //显示01234567
(0163) for ( x=0; x<8; x++ )
03CD 2766 CLR R22
03CE C007 RJMP 0x03D6
(0164) {
(0165) ZLG7290_Download(x,0,0,x);
03CF 836A STD R22,2+Y
03D0 2422 CLR R2
03D1 8228 STD R2,0+Y
03D2 2722 CLR R18
03D3 2F06 MOV R16,R22
03D4 DF21 RCALL _ZLG7290_Download
03D5 9563 INC R22
03D6 3068 CPI R22,0x8
03D7 F3B8 BCS 0x03CF
(0166) }
(0167) //设置闪烁控制寄存器
(0168) ZLG7290_WriteReg(ZLG7290_FlashOnOff,0x11);
03D8 E121 LDI R18,0x11
03D9 E00C LDI R16,0xC
03DA DED5 RCALL _ZLG7290_WriteReg
(0169) //闪烁演示
(0170) for ( x=0; x<8; x++ )
03DB 2766 CLR R22
03DC C008 RJMP 0x03E5
(0171) {
(0172) ZLG7290_Flash(dat);
03DD 2F24 MOV R18,R20
03DE E700 LDI R16,0x70
03DF DEF4 RCALL _ZLG7290_cmd
(0173) dat <<= 1;
03E0 0F44 LSL R20
(0174) delay1(300);
03E1 E20C LDI R16,0x2C
03E2 E011 LDI R17,1
03E3 DF3E RCALL _delay1
03E4 9563 INC R22
03E5 3068 CPI R22,0x8
03E6 F3B0 BCS 0x03DD
(0175) }
(0176) //数码管的8个位一起闪烁
(0177) ZLG7290_Flash(0xFF);
03E7 EF2F LDI R18,0xFF
03E8 E700 LDI R16,0x70
03E9 DEEA RCALL _ZLG7290_cmd
(0178) delay1(350);
03EA E50E LDI R16,0x5E
03EB E011 LDI R17,1
03EC DF35 RCALL _delay1
(0179) //停止闪烁
(0180) ZLG7290_Flash(0x00);
03ED 2722 CLR R18
03EE E700 LDI R16,0x70
03EF DEE4 RCALL _ZLG7290_cmd
(0181) delay1(50);
03F0 E302 LDI R16,0x32
03F1 E010 LDI R17,0
03F2 DF2F RCALL _delay1
(0182) }
03F3 9623 ADIW R28,3
03F4 940E054B CALL pop_gset2
03F6 9508 RET
_Test_SegOnOff:
seg --> R20
03F7 940E0524 CALL push_gset1
(0183)
(0184) /*
(0185) 函数:Test_SegOnOff()
(0186) 功能:测试段寻址功能
(0187) */
(0188) void Test_SegOnOff()
(0189) {
(0190) uchar seg;
(0191) ClearAll();
03F9 DF41 RCALL _ClearAll
(0192) delay1(100);
03FA E604 LDI R16,0x64
03FB E010 LDI R17,0
03FC DF25 RCALL _delay1
(0193) for ( seg=0; seg<64; seg++ )
03FD 2744 CLR R20
03FE C007 RJMP 0x0406
(0194) {
(0195) ZLG7290_SegOnOff(seg,1);
03FF E021 LDI R18,1
0400 2F04 MOV R16,R20
0401 DEE6 RCALL _ZLG7290_SegOnOff
(0196) delay1(30);
0402 E10E LDI R16,0x1E
0403 E010 LDI R17,0
0404 DF1D RCALL _delay1
0405 9543 INC R20
0406 3440 CPI R20,0x40
0407 F3B8 BCS 0x03FF
(0197) }
(0198) delay1(100);
0408 E604 LDI R16,0x64
0409 E010 LDI R17,0
040A DF17 RCALL _delay1
(0199) for ( seg=0; seg<64; seg++ )
040B 2744 CLR R20
040C C007 RJMP 0x0414
(0200) {
(0201) ZLG7290_SegOnOff(seg,0);
040D 2722 CLR R18
040E 2F04 MOV R16,R20
040F DED8 RCALL _ZLG7290_SegOnOff
(0202) delay1(30);
0410 E10E LDI R16,0x1E
0411 E010 LDI R17,0
0412 DF0F RCALL _delay1
0413 9543 INC R20
0414 3440 CPI R20,0x40
0415 F3B8 BCS 0x040D
(0203) }
(0204) delay1(100);
0416 E604 LDI R16,0x64
0417 E010 LDI R17,0
0418 DF09 RCALL _delay1
(0205) }
0419 940E0527 CALL pop_gset1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -