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

📄 595_1602_example.lst

📁 ATMEGA8做的595驱动1602
💻 LST
📖 第 1 页 / 共 4 页
字号:
(0453) 		}
(0454) 	}
    023B D0AE      RCALL	pop_gset5
    023C 9624      ADIW	R28,4
    023D 9508      RET
_FlashStringGroup:
  Y                    --> Y+6
  X                    --> Y+4
  StringCounter        --> R22
  String               --> R20
    023E D0B3      RCALL	push_gset2
    023F 2F62      MOV	R22,R18
    0240 01A8      MOVW	R20,R16
(0455) }
(0456) 
(0457) /********************************************************
(0458) *  函数说明:字幕GIF函数                                *
(0459) ********************************************************/
(0460) void FlashStringGroup(char String[][17],char StringCounter,char X,char Y)
(0461) {
(0462)     static char Pictures = 0;
(0463) 	static char DispState = 0;
(0464)     if (FlashGIFStringCounter % FlashGIFTimeOut > (FlashGIFTimeOut >> 1))
    0241 EE28      LDI	R18,0xE8
    0242 E033      LDI	R19,3
    0243 9100006A  LDS	R16,FlashGIFStringCounter
    0245 9110006B  LDS	R17,FlashGIFStringCounter+1
    0247 D084      RCALL	mod16u
    0248 EF84      LDI	R24,0xF4
    0249 E091      LDI	R25,1
    024A 1780      CP	R24,R16
    024B 0791      CPC	R25,R17
    024C F490      BCC	0x025F
(0465) 	{
(0466) 	    if (DispState == 0)
    024D 90200069  LDS	R2,DispState
    024F 2022      TST	R2
    0250 F4F9      BNE	0x0270
(0467) 		{
(0468) 	        Pictures ++;
    0251 91800068  LDS	R24,Pictures
    0253 5F8F      SUBI	R24,0xFF
    0254 93800068  STS	Pictures,R24
(0469) 		    if (Pictures == StringCounter)
    0256 1786      CP	R24,R22
    0257 F419      BNE	0x025B
(0470) 		    {
(0471) 		        Pictures = 0; 
    0258 2422      CLR	R2
    0259 92200068  STS	Pictures,R2
(0472) 		    }
(0473) 			DispState = 1;
    025B E081      LDI	R24,1
    025C 93800069  STS	DispState,R24
(0474) 		}
(0475) 	}
    025E C011      RJMP	0x0270
(0476) 	else
(0477) 	{
(0478) 	    if (DispState == 1)
    025F 91800069  LDS	R24,DispState
    0261 3081      CPI	R24,1
    0262 F469      BNE	0x0270
(0479) 		{
(0480) 		    Pictures ++;
    0263 91800068  LDS	R24,Pictures
    0265 5F8F      SUBI	R24,0xFF
    0266 93800068  STS	Pictures,R24
(0481) 			if (Pictures == StringCounter)
    0268 1786      CP	R24,R22
    0269 F419      BNE	0x026D
(0482) 			{
(0483) 			    Pictures = 0;
    026A 2422      CLR	R2
    026B 92200068  STS	Pictures,R2
(0484) 			}
(0485) 			DispState = 0;
    026D 2422      CLR	R2
    026E 92200069  STS	DispState,R2
(0486) 		}
(0487) 	}
(0488) 	
(0489) 	Locate(X,Y);
    0270 812E      LDD	R18,Y+6
    0271 5021      SUBI	R18,1
    0272 810C      LDD	R16,Y+4
    0273 5001      SUBI	R16,1
    0274 DEF1      RCALL	_LCDSetXY
(0490) 	Print(String[Pictures]);
    0275 90200068  LDS	R2,Pictures
    0277 E181      LDI	R24,0x11
    0278 9D82      MUL	R24,R2
    0279 0180      MOVW	R16,R0
    027A 0F04      ADD	R16,R20
    027B 1F15      ADC	R17,R21
    027C DEF8      RCALL	_LCDDisplayString
    027D D06A      RCALL	pop_gset2
    027E 9508      RET
FILE: G:\单片机\源程序\串行1602\595_1602_Example\595_1602_Example.c
(0001) /********************************************************
(0002) *  程序说明:串行1602调试程序                           *
(0003) *  版本:    v1.0                                       *
(0004) *  平台:    ATMega8L 8M                                *
(0005) *  作者:    傻孩子                                     *
(0006) *  日期:    2006年1月11日                              *
(0007) *  修改:    傻孩子                                     *
(0008) *  修改日期:2006年2月19日                              *
(0009) *                                                       *
(0010) *  [说明]                                               *
(0011) ********************************************************/
(0012) # include "RD_ATMega8L.h"
(0013) 
(0014) /***********************
(0015) *    系 统 宏 定 义    *
(0016) ***********************/
(0017) # pragma interrupt_handler Timer0OvfIsr:10
(0018) /*---------------------*
(0019) * SerialToCollateral.h *
(0020) * 配置宏定义           *
(0021) *---------------------*/
(0022) # define VSCK           _PC4
(0023) # define VRCK           _PC3
(0024) # define VSI            _PC5
(0025) /*--- 定义_Use_8Bit_VitualPORT 选择单个595模式 ---*/
(0026) # define _Use_8Bit_VitualPORT
(0027) # include "SerialToCollateral.h"
(0028) 
(0029) /*---------------------*
(0030) * RD_LCD1602B.h        *
(0031) * 配置宏定义           *
(0032) *---------------------*/
(0033) # define LCD_RS                        PV4
(0034) # define LCD_E                         PV5                                  
(0035) # define LCD_SendHalfCharLow(a)        VPORT &= 0xf0;VPORT |= (a & 0x0f);refreshVirtualPORT();
(0036) # define LCD_SendHalfCharHigh(a)       VPORT &= 0xf0;VPORT |= (a >> 4);refreshVirtualPORT();
(0037) # define SetEnable                     LCD_E = High;refreshVirtualPORT();
(0038) # define SetDisable                    LCD_E = Low;refreshVirtualPORT();
(0039) 
(0040) /*--- 修改FlashTimeOut来修改显示字符闪烁的频率 ---*/
(0041) # define FlashTimeOut   800
(0042) # define RunStringSpeed 11
(0043) /*--- 定义_Use_LCD1602B_Serial 选择595串行连接模式(否则为直接连接模式) ---*/
(0044) # define _Use_LCD1602B_Serial
(0045) # include "RD_LCD1602B.h"
(0046) 
(0047) /***********************
(0048) *    全局变量声明区    *
(0049) ***********************/
(0050) unsigned int FlashGIFStringCounter = 0;
(0051) unsigned int FlashTimeCounter = 0;
(0052) 
(0053) /***********************
(0054) *    系统函数声明区    *
(0055) ***********************/
(0056) void SystemInit(void);
(0057) void PortInit(void);
(0058) void Timer0Init(void);
(0059) 
(0060) /********************************************************
(0061) *  函数说明:端口初始化                                 *
(0062) ********************************************************/
(0063) void PortInit(void)
(0064) {
(0065)     DDRC = 0xff;
_PortInit:
    027F EF8F      LDI	R24,0xFF
    0280 BB84      OUT	0x14,R24
(0066) 	PORTC = 0xff;
    0281 BB85      OUT	0x15,R24
(0067) 	
(0068) 	PORTDefine();
    0282 DDE3      RCALL	_PORTDefine
    0283 9508      RET
(0069) }
(0070) 
(0071) /********************************************************
(0072) *  函数说明:定时器0初始化函数                          *
(0073) ********************************************************/
(0074) void Timer0Init(void)
(0075) {
(0076)     TCCR0 = 0x00;                                        //stop       
_Timer0Init:
    0284 2422      CLR	R2
    0285 BE23      OUT	0x33,R2
(0077)     TCNT0 = 0x83;                                        //set count  
    0286 E883      LDI	R24,0x83
    0287 BF82      OUT	0x32,R24
(0078)     TCCR0 = 0x03;                                        //start timer
    0288 E083      LDI	R24,3
    0289 BF83      OUT	0x33,R24
    028A 9508      RET
_Timer0OvfIsr:
    028B 938A      ST	R24,-Y
    028C 939A      ST	R25,-Y
    028D B78F      IN	R24,0x3F
    028E 938A      ST	R24,-Y
(0079) }
(0080) 
(0081) /********************************************************
(0082) *  函数说明:定时器0中断处理函数                        *
(0083) ********************************************************/
(0084) void Timer0OvfIsr(void)
(0085) {
(0086)      TCNT0 = 0x83;
    028F E883      LDI	R24,0x83
    0290 BF82      OUT	0x32,R24
(0087) 	 
(0088)      FlashGIFStringCounter ++;
    0291 9180006A  LDS	R24,FlashGIFStringCounter
    0293 9190006B  LDS	R25,FlashGIFStringCounter+1
    0295 9601      ADIW	R24,1
    0296 9390006B  STS	FlashGIFStringCounter+1,R25
    0298 9380006A  STS	FlashGIFStringCounter,R24
(0089) 	 FlashTimeCounter ++; 
    029A 9180006C  LDS	R24,FlashTimeCounter
    029C 9190006D  LDS	R25,FlashTimeCounter+1
    029E 9601      ADIW	R24,1
    029F 9390006D  STS	FlashTimeCounter+1,R25
    02A1 9380006C  STS	FlashTimeCounter,R24
    02A3 9189      LD	R24,Y+
    02A4 BF8F      OUT	0x3F,R24
    02A5 9199      LD	R25,Y+
    02A6 9189      LD	R24,Y+
    02A7 9518      RETI
(0090) 	 
(0091) }
(0092) 
(0093) /********************************************************
(0094) *  函数说明:系统初始化函数                             *
(0095) ********************************************************/
(0096) void SystemInit(void)
(0097) {
(0098)     CLI();
_SystemInit:
    02A8 94F8      BCLR	7
(0099) 	
(0100) 	PortInit();
    02A9 DFD5      RCALL	_PortInit
(0101) 	Timer0Init();
    02AA DFD9      RCALL	_Timer0Init
(0102) 	LCDInit();
    02AB DE62      RCALL	_LCDInit
(0103) 	
(0104) 	TIMSK = 0x01
    02AC E081      LDI	R24,1
    02AD BF89      OUT	0x39,R24
    02AE 9478      BSET	7
    02AF 9508      RET
_main:
    02B0 9725      SBIW	R28,5
(0105) 	
(0106) 	SEI();
(0107) }
(0108) 
(0109) 
(0110) void main(void)
(0111) {
(0112)     SystemInit();
    02B1 DFF6      RCALL	_SystemInit
    02B2 C011      RJMP	0x02C4
(0113)                                                                   
(0114) 	while(1)
(0115) 	{
(0116) 	    RunString("I really like this game!             SWUST Roboteam   ",1,1,1,16);
    02B3 E180      LDI	R24,0x10
    02B4 838C      STD	Y+4,R24
    02B5 E081      LDI	R24,1
    02B6 838A      STD	Y+2,R24
    02B7 8388      STD	Y+0,R24
    02B8 E021      LDI	R18,1
    02B9 E70F      LDI	R16,0x7F
    02BA E010      LDI	R17,0
    02BB DEEF      RCALL	_RunString
(0117) 	    Flash("Hello AVR World!",' ',1,2);
FILE: <library>
    02BC E082      LDI	R24,2
    02BD 838A      STD	Y+2,R24
    02BE E081      LDI	R24,1
    02BF 8388      STD	Y+0,R24
    02C0 E220      LDI	R18,0x20
    02C1 E60E      LDI	R16,0x6E
    02C2 E010      LDI	R17,0
    02C3 DF49      RCALL	_Flash
    02C4 CFEE      RJMP	0x02B3
    02C5 9625      ADIW	R28,5
    02C6 9508      RET
push_arg4:
    02C7 933A      ST	R19,-Y
    02C8 932A      ST	R18,-Y
push_arg2:
    02C9 931A      ST	R17,-Y
    02CA 930A      ST	R16,-Y
    02CB 9508      RET
mod16u:
    02CC 9468      BSET	6
    02CD C001      RJMP	xdiv16u
div16u:
    02CE 94E8      BCLR	6
xdiv16u:
    02CF 92EA      ST	R14,-Y
    02D0 92FA      ST	R15,-Y
    02D1 938A      ST	R24,-Y
    02D2 24EE      CLR	R14
    02D3 24FF      CLR	R15
    02D4 E180      LDI	R24,0x10
    02D5 0F00      LSL	R16
    02D6 1F11      ROL	R17
    02D7 1CEE      ROL	R14
    02D8 1CFF      ROL	R15
    02D9 16E2      CP	R14,R18
    02DA 06F3      CPC	R15,R19
    02DB F018      BCS	0x02DF
    02DC 1AE2      SUB	R14,R18
    02DD 0AF3      SBC	R15,R19
    02DE 9503      INC	R16
    02DF 958A      DEC	R24
    02E0 F7A1      BNE	0x02D5
    02E1 F416      BRTC	0x02E4
    02E2 2D0E      MOV	R16,R14
    02E3 2D1F      MOV	R17,R15
    02E4 9189      LD	R24,Y+
    02E5 90F9      LD	R15,Y+
    02E6 90E9      LD	R14,Y+
    02E7 9508      RET
pop_gset2:
    02E8 E0E2      LDI	R30,2
    02E9 C00E      RJMP	pop
pop_gset5:
    02EA 27EE      CLR	R30
    02EB C00C      RJMP	pop
push_gset5:
    02EC 92FA      ST	R15,-Y
    02ED 92EA      ST	R14,-Y
push_gset4:
    02EE 92DA      ST	R13,-Y
    02EF 92CA      ST	R12,-Y
push_gset3:
    02F0 92BA      ST	R11,-Y
    02F1 92AA      ST	R10,-Y
push_gset2:
    02F2 937A      ST	R23,-Y
    02F3 936A      ST	R22,-Y
push_gset1:
    02F4 935A      ST	R21,-Y
    02F5 934A      ST	R20,-Y
    02F6 9508      RET
pop_gset1:
    02F7 E0E1      LDI	R30,1
pop:
    02F8 9149      LD	R20,Y+
    02F9 9159      LD	R21,Y+
    02FA FDE0      SBRC	R30,0
    02FB 9508      RET
    02FC 9169      LD	R22,Y+
    02FD 9179      LD	R23,Y+
    02FE FDE1      SBRC	R30,1
    02FF 9508      RET
    0300 90A9      LD	R10,Y+
    0301 90B9      LD	R11,Y+
    0302 FDE2      SBRC	R30,2
    0303 9508      RET
    0304 90C9      LD	R12,Y+
    0305 90D9      LD	R13,Y+
    0306 FDE3      SBRC	R30,3
    0307 9508      RET
    0308 90E9      LD	R14,Y+
    0309 90F9      LD	R15,Y+
    030A 9508      RET
lsl32:
    030B 920F      PUSH	R0
    030C 9009      LD	R0,Y+
    030D 2000      TST	R0
    030E F031      BEQ	0x0315
    030F 0F00      LSL	R16
    0310 1F11      ROL	R17
    0311 1F22      ROL	R18
    0312 1F33      ROL	R19
    0313 940A      DEC	R0
    0314 CFF8      RJMP	0x030D
    0315 900F      POP	R0
    0316 9508      RET
lsl8:
    0317 2311      TST	R17
    0318 F019      BEQ	0x031C
    0319 0F00      LSL	R16
    031A 951A      DEC	R17
    031B CFFB      RJMP	lsl8
    031C 9508      RET
lsr32:
    031D 920F      PUSH	R0
    031E 9009      LD	R0,Y+
    031F 2000      TST	R0
    0320 F031      BEQ	0x0327
    0321 9536      LSR	R19
    0322 9527      ROR	R18
    0323 9517      ROR	R17
    0324 9507      ROR	R16
    0325 940A      DEC	R0
    0326 CFF8      RJMP	0x031F
    0327 900F      POP	R0
    0328 9508      RET
<created procedures>:
    0329 91E00061  LDS	R30,VPORTBit
    032B 91F00062  LDS	R31,VPORTBit+1
    032D 8180      LDD	R24,Z+0
    032E 9508      RET
    032F 91E000BE  LDS	R30,PORTC_BIT
    0331 91F000BF  LDS	R31,PORTC_BIT+1
    0333 8180      LDD	R24,Z+0
    0334 9508      RET
    0335 91800060  LDS	R24,VPORT
    0337 7F80      ANDI	R24,0xF0
    0338 93800060  STS	VPORT,R24
    033A 2F84      MOV	R24,R20
    033B 9582      SWAP	R24
    033C 708F      ANDI	R24,0xF
    033D 90200060  LDS	R2,VPORT
    033F 2A28      OR	R2,R24
    0340 92200060  STS	VPORT,R2
    0342 9508      RET
    0343 708F      ANDI	R24,0xF
    0344 90200060  LDS	R2,VPORT
    0346 2A28      OR	R2,R24
    0347 92200060  STS	VPORT,R2
    0349 9508      RET
    034A 91800060  LDS	R24,VPORT
    034C 7F80      ANDI	R24,0xF0
    034D 93800060  STS	VPORT,R24
    034F 2F84      MOV	R24,R20
    0350 9508      RET
    0351 01CE      MOVW	R24,R28
    0352 2DEA      MOV	R30,R10
    0353 27FF      CLR	R31
    0354 0FE8      ADD	R30,R24
    0355 1FF9      ADC	R31,R25
    0356 9508      RET

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -