⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bjdj_4.lst

📁 利用mega128控制由L298和L297构成的驱动板
💻 LST
📖 第 1 页 / 共 4 页
字号:
    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 + -