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

📄 wx_mn.lst

📁 nrf905无线收发模块利用模拟spi通信的程序 经此程序可转成串口通信
💻 LST
📖 第 1 页 / 共 5 页
字号:
    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 + -