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

📄 8563.lst

📁 基于ATMEGA16的时钟芯片原代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
    022D 922000AE  STS	temp+2,R2
(0158) 	temp[1]=(c&0x0f)+0x30;
    022F 2F80      MOV	R24,R16
    0230 708F      ANDI	R24,0xF
    0231 5D80      SUBI	R24,0xD0
    0232 938000AD  STS	temp+1,R24
(0159) 	temp[0]=((c&0xf0)>>4)+0x30;
    0234 2F80      MOV	R24,R16
    0235 7F80      ANDI	R24,0xF0
    0236 9582      SWAP	R24
    0237 708F      ANDI	R24,0xF
    0238 5D80      SUBI	R24,0xD0
    0239 938000AC  STS	temp,R24
    023B 9508      RET
(0160) }
(0161) /*******************************************************/
(0162) /******   函数名称: Twi_Init()                    ******/
(0163) /******   功    能: 初始化TWI总线                 ******/
(0164) /******   参    数: 无                            ******/
(0165) /******   返回值  : 无                            ******/
(0166) /*******************************************************/
(0167) void Twi_Init(void)
(0168) {
(0169)  	TWBR=32;	   							//设置波特率
_Twi_Init:
    023C E280      LDI	R24,0x20
    023D B980      OUT	0x00,R24
(0170) 	TWSR=0;									//复位TWI总线
    023E 2422      CLR	R2
    023F B821      OUT	0x01,R2
(0171) 	i2c_Write(0,0);							//设置时钟状态
    0240 2722      CLR	R18
    0241 2700      CLR	R16
    0242 DF47      RCALL	_i2c_Write
(0172) 	i2c_Write(0x81,0x0d);
    0243 E02D      LDI	R18,0xD
    0244 E801      LDI	R16,0x81
    0245 DF44      RCALL	_i2c_Write
(0173) 	i2c_Write(0x82,0x0e);
    0246 E02E      LDI	R18,0xE
    0247 E802      LDI	R16,0x82
    0248 DF41      RCALL	_i2c_Write
(0174) 	i2c_Write(1,0x0f);
    0249 E02F      LDI	R18,0xF
    024A E001      LDI	R16,1
    024B DF3E      RCALL	_i2c_Write
(0175) 	i2c_Write(0x81,0x01);
    024C E021      LDI	R18,1
    024D E801      LDI	R16,0x81
    024E DF3B      RCALL	_i2c_Write
(0176) 	i2c_Write(0x50,0x02);
    024F E022      LDI	R18,2
    0250 E500      LDI	R16,0x50
    0251 DF38      RCALL	_i2c_Write
(0177) 	i2c_Write(0x04,0x03);
    0252 E023      LDI	R18,3
    0253 E004      LDI	R16,4
    0254 DF35      RCALL	_i2c_Write
(0178) 	i2c_Write(0x09,0x04);
    0255 E024      LDI	R18,4
    0256 E009      LDI	R16,0x9
    0257 DF32      RCALL	_i2c_Write
(0179) 	i2c_Write(0x01,0x05);
    0258 E025      LDI	R18,5
    0259 E001      LDI	R16,1
    025A DF2F      RCALL	_i2c_Write
(0180) 	i2c_Write(0x05,0x06);
    025B E026      LDI	R18,6
    025C E005      LDI	R16,5
    025D DF2C      RCALL	_i2c_Write
(0181) 	i2c_Write(0x08,0x07);
    025E E027      LDI	R18,7
    025F E008      LDI	R16,0x8
    0260 DF29      RCALL	_i2c_Write
(0182) 	i2c_Write(0x08,0x02);
    0261 E022      LDI	R18,2
    0262 E008      LDI	R16,0x8
    0263 DF26      RCALL	_i2c_Write
    0264 9508      RET
_main:
    0265 9722      SBIW	R28,2
(0183) 	
(0184) }
(0185) /*******************************************************/
(0186) /******   函数名称: main()                        ******/
(0187) /******   功    能: 在液晶屏显示时间              ******/
(0188) /******   参    数: 无                            ******/
(0189) /******   返回值  : 无                            ******/
(0190) /*******************************************************/
(0191) void main(void)
(0192) {	CLI(); 
    0266 94F8      BCLR	7
(0193)     Lcd_INT();
    0267 DEB9      RCALL	_Lcd_INT
(0194)     lcd_clear();
    0268 DE55      RCALL	_lcd_clear
(0195) 	delay_nms(500);							//延时
    0269 EF04      LDI	R16,0xF4
    026A E011      LDI	R17,1
    026B DEF2      RCALL	_delay_nms
(0196) 	Twi_Init();								//初始化TWI总线
    026C DFCF      RCALL	_Twi_Init
(0197) 	LCD_Write_string(0,0,"AVR_XQV1.2开发板");//向液晶屏写入初始数据
    026D E98B      LDI	R24,0x9B
    026E E090      LDI	R25,0
    026F 8399      STD	Y+1,R25
    0270 8388      STD	Y+0,R24
    0271 2722      CLR	R18
    0272 2700      CLR	R16
    0273 DE83      RCALL	_LCD_Write_string
(0198) 	LCD_Write_string(1,0,"20");
    0274 E988      LDI	R24,0x98
    0275 E090      LDI	R25,0
    0276 8399      STD	Y+1,R25
    0277 8388      STD	Y+0,R24
    0278 2722      CLR	R18
    0279 E001      LDI	R16,1
    027A DE7C      RCALL	_LCD_Write_string
(0199) 	LCD_Write_string(1,2,"年");
    027B E985      LDI	R24,0x95
    027C E090      LDI	R25,0
    027D 8399      STD	Y+1,R25
    027E 8388      STD	Y+0,R24
    027F E022      LDI	R18,2
    0280 E001      LDI	R16,1
    0281 DE75      RCALL	_LCD_Write_string
(0200) 	LCD_Write_string(1,4,"月");
    0282 E982      LDI	R24,0x92
    0283 E090      LDI	R25,0
    0284 8399      STD	Y+1,R25
    0285 8388      STD	Y+0,R24
    0286 E024      LDI	R18,4
    0287 E001      LDI	R16,1
    0288 DE6E      RCALL	_LCD_Write_string
(0201) 	LCD_Write_string(1,6,"日");
    0289 E88F      LDI	R24,0x8F
    028A E090      LDI	R25,0
    028B 8399      STD	Y+1,R25
    028C 8388      STD	Y+0,R24
    028D E026      LDI	R18,6
    028E E001      LDI	R16,1
    028F DE67      RCALL	_LCD_Write_string
(0202) 	LCD_Write_string(2,0,"星");
    0290 E88C      LDI	R24,0x8C
    0291 E090      LDI	R25,0
    0292 8399      STD	Y+1,R25
    0293 8388      STD	Y+0,R24
    0294 2722      CLR	R18
    0295 E002      LDI	R16,2
    0296 DE60      RCALL	_LCD_Write_string
(0203) 	LCD_Write_string(2,1,"期");
    0297 E889      LDI	R24,0x89
    0298 E090      LDI	R25,0
    0299 8399      STD	Y+1,R25
    029A 8388      STD	Y+0,R24
    029B E021      LDI	R18,1
    029C E002      LDI	R16,2
    029D DE59      RCALL	_LCD_Write_string
(0204) 	LCD_Write_string(3,1,"时");
    029E E886      LDI	R24,0x86
    029F E090      LDI	R25,0
    02A0 8399      STD	Y+1,R25
    02A1 8388      STD	Y+0,R24
    02A2 E021      LDI	R18,1
    02A3 E003      LDI	R16,3
    02A4 DE52      RCALL	_LCD_Write_string
(0205) 	LCD_Write_string(3,3,"分");
    02A5 E883      LDI	R24,0x83
    02A6 E090      LDI	R25,0
    02A7 8399      STD	Y+1,R25
    02A8 8388      STD	Y+0,R24
    02A9 E023      LDI	R18,3
    02AA E003      LDI	R16,3
    02AB DE4B      RCALL	_LCD_Write_string
(0206) 	LCD_Write_string(3,5,"秒");
    02AC E880      LDI	R24,0x80
    02AD E090      LDI	R25,0
    02AE 8399      STD	Y+1,R25
    02AF 8388      STD	Y+0,R24
    02B0 E025      LDI	R18,5
    02B1 E003      LDI	R16,3
    02B2 DE44      RCALL	_LCD_Write_string
(0207) 	SEI();					   				//开中断
    02B3 9478      BSET	7
    02B4 C09E      RJMP	0x0353
(0208) 	while(1) 
(0209) 	{
(0210)  	i2c_Write(0x19,0x01); 						//向PCF8563写命令
    02B5 E021      LDI	R18,1
    02B6 E109      LDI	R16,0x19
    02B7 DED2      RCALL	_i2c_Write
(0211) 	i2c_Read(0x02);								//读取时间数据
    02B8 E002      LDI	R16,2
    02B9 DF30      RCALL	_i2c_Read
(0212) 	ToStr(read_shijian[0]&0x7f);				//转换成字符串
    02BA 91000060  LDS	R16,read_shijian
    02BC 770F      ANDI	R16,0x7F
    02BD DF6E      RCALL	_ToStr
(0213) 	LCD_Write_string(3,4,temp);					//刷新时间
    02BE EA8C      LDI	R24,0xAC
    02BF E090      LDI	R25,0
    02C0 8399      STD	Y+1,R25
    02C1 8388      STD	Y+0,R24
    02C2 E024      LDI	R18,4
    02C3 E003      LDI	R16,3
    02C4 DE32      RCALL	_LCD_Write_string
(0214) 	ToStr(read_shijian[1]&0x7f);				//转换成字符串
    02C5 91000061  LDS	R16,read_shijian+1
    02C7 770F      ANDI	R16,0x7F
    02C8 DF63      RCALL	_ToStr
(0215) 	LCD_Write_string(3,2,temp);					//刷新时间
    02C9 EA8C      LDI	R24,0xAC
    02CA E090      LDI	R25,0
    02CB 8399      STD	Y+1,R25
    02CC 8388      STD	Y+0,R24
    02CD E022      LDI	R18,2
    02CE E003      LDI	R16,3
    02CF DE27      RCALL	_LCD_Write_string
(0216) 	ToStr(read_shijian[2]&0x3f);				//转换成字符串
    02D0 91000062  LDS	R16,read_shijian+2
    02D2 730F      ANDI	R16,0x3F
    02D3 DF58      RCALL	_ToStr
(0217) 	LCD_Write_string(3,0,temp);					//刷新时间
    02D4 EA8C      LDI	R24,0xAC
    02D5 E090      LDI	R25,0
    02D6 8399      STD	Y+1,R25
    02D7 8388      STD	Y+0,R24
    02D8 2722      CLR	R18
    02D9 E003      LDI	R16,3
    02DA DE1C      RCALL	_LCD_Write_string
(0218) 	ToStr(read_shijian[3]&0x3f);				//转换成字符串
    02DB 91000063  LDS	R16,read_shijian+3
    02DD 730F      ANDI	R16,0x3F
    02DE DF4D      RCALL	_ToStr
(0219) 	LCD_Write_string(1,5,temp);					//刷新时间
    02DF EA8C      LDI	R24,0xAC
    02E0 E090      LDI	R25,0
    02E1 8399      STD	Y+1,R25
    02E2 8388      STD	Y+0,R24
    02E3 E025      LDI	R18,5
    02E4 E001      LDI	R16,1
    02E5 DE11      RCALL	_LCD_Write_string
(0220) 	switch(read_shijian[4]&0x07)				//转换成字符串
    02E6 91400064  LDS	R20,0x64
    02E8 2755      CLR	R21
    02E9 7047      ANDI	R20,7
    02EA 7050      ANDI	R21,0
    02EB 3040      CPI	R20,0
    02EC 0745      CPC	R20,R21
    02ED F0C9      BEQ	0x0307
    02EE 3041      CPI	R20,1
    02EF E0E0      LDI	R30,0
    02F0 075E      CPC	R21,R30
    02F1 F0E9      BEQ	0x030F
    02F2 3042      CPI	R20,2
    02F3 E0E0      LDI	R30,0
    02F4 075E      CPC	R21,R30
    02F5 F109      BEQ	0x0317
    02F6 3043      CPI	R20,3
    02F7 E0E0      LDI	R30,0
    02F8 075E      CPC	R21,R30
    02F9 F129      BEQ	0x031F
    02FA 3044      CPI	R20,4
    02FB E0E0      LDI	R30,0
    02FC 075E      CPC	R21,R30
    02FD F149      BEQ	0x0327
    02FE 3045      CPI	R20,5
    02FF E0E0      LDI	R30,0
    0300 075E      CPC	R21,R30
    0301 F169      BEQ	0x032F
    0302 3046      CPI	R20,6
    0303 E0E0      LDI	R30,0
    0304 075E      CPC	R21,R30
    0305 F189      BEQ	0x0337
    0306 C037      RJMP	0x033E
(0221) 	{											
(0222) 	 	case 0:LCD_Write_string(2,2,"日");break;//刷新时间
    0307 E88F      LDI	R24,0x8F
    0308 E090      LDI	R25,0
    0309 8399      STD	Y+1,R25
    030A 8388      STD	Y+0,R24
    030B E022      LDI	R18,2
    030C E002      LDI	R16,2
    030D DDE9      RCALL	_LCD_Write_string
    030E C02F      RJMP	0x033E
(0223) 		case 1:LCD_Write_string(2,2,"一");break;//刷新时间
    030F E78D      LDI	R24,0x7D
    0310 E090      LDI	R25,0
    0311 8399      STD	Y+1,R25
    0312 8388      STD	Y+0,R24
    0313 E022      LDI	R18,2
    0314 E002      LDI	R16,2
    0315 DDE1      RCALL	_LCD_Write_string
    0316 C027      RJMP	0x033E
(0224) 		case 2:LCD_Write_string(2,2,"二");break;//刷新时间
    0317 E78A      LDI	R24,0x7A
    0318 E090      LDI	R25,0
    0319 8399      STD	Y+1,R25
    031A 8388      STD	Y+0,R24
    031B E022      LDI	R18,2
    031C E002      LDI	R16,2
    031D DDD9      RCALL	_LCD_Write_string
    031E C01F      RJMP	0x033E
(0225) 		case 3:LCD_Write_string(2,2,"三");break;//刷新时间
    031F E787      LDI	R24,0x77
    0320 E090      LDI	R25,0
    0321 8399      STD	Y+1,R25
    0322 8388      STD	Y+0,R24
    0323 E022      LDI	R18,2
    0324 E002      LDI	R16,2
    0325 DDD1      RCALL	_LCD_Write_string
    0326 C017      RJMP	0x033E
(0226) 		case 4:LCD_Write_string(2,2,"四");break;//刷新时间
    0327 E784      LDI	R24,0x74
    0328 E090      LDI	R25,0
    0329 8399      STD	Y+1,R25
    032A 8388      STD	Y+0,R24
    032B E022      LDI	R18,2
    032C E002      LDI	R16,2
    032D DDC9      RCALL	_LCD_Write_string
    032E C00F      RJMP	0x033E
(0227) 		case 5:LCD_Write_string(2,2,"五");break;//刷新时间
    032F E781      LDI	R24,0x71
    0330 E090      LDI	R25,0
    0331 8399      STD	Y+1,R25
    0332 8388      STD	Y+0,R24
    0333 E022      LDI	R18,2
    0334 E002      LDI	R16,2
    0335 DDC1      RCALL	_LCD_Write_string
    0336 C007      RJMP	0x033E
(0228) 		case 6:LCD_Write_string(2,2,"六");break;//刷新时间
    0337 E68E      LDI	R24,0x6E
    0338 E090      LDI	R25,0
    0339 8399      STD	Y+1,R25
    033A 8388      STD	Y+0,R24
    033B E022      LDI	R18,2
    033C E002      LDI	R16,2
    033D DDB9      RCALL	_LCD_Write_string
(0229) 	}
(0230) 	ToStr(read_shijian[5]&0x1f);				//转换成字符串
    033E 91000065  LDS	R16,0x65
    0340 710F      ANDI	R16,0x1F
    0341 DEEA      RCALL	_ToStr
(0231) 	LCD_Write_string(1,3,temp);					//刷新时间
    0342 EA8C      LDI	R24,0xAC
    0343 E090      LDI	R25,0
    0344 8399      STD	Y+1,R25
    0345 8388      STD	Y+0,R24
    0346 E023      LDI	R18,3
    0347 E001      LDI	R16,1
    0348 DDAE      RCALL	_LCD_Write_string
(0232) 	ToStr(read_shijian[6]);						//转换成字符串
    0349 91000066  LDS	R16,0x66
    034B DEE0      RCALL	_ToStr
(0233) 	LCD_Write_string(1,1,temp);					//刷新时间
FILE: <library>
    034C EA8C      LDI	R24,0xAC
    034D E090      LDI	R25,0
    034E 8399      STD	Y+1,R25
    034F 8388      STD	Y+0,R24
    0350 E021      LDI	R18,1
    0351 E001      LDI	R16,1
    0352 DDA4      RCALL	_LCD_Write_string
    0353 CF61      RJMP	0x02B5
    0354 9622      ADIW	R28,2
    0355 9508      RET
mod8u:
    0356 9468      BSET	6
    0357 C001      RJMP	xdiv8u
div8u:
    0358 94E8      BCLR	6
xdiv8u:
    0359 932A      ST	R18,-Y
    035A 92FA      ST	R15,-Y
    035B 92EA      ST	R14,-Y
    035C 24FF      CLR	R15
    035D 24EE      CLR	R14
    035E E120      LDI	R18,0x10
    035F 0F00      LSL	R16
    0360 1CFF      ROL	R15
    0361 1CEE      ROL	R14
    0362 16E1      CP	R14,R17
    0363 F010      BCS	0x0366
    0364 1AE1      SUB	R14,R17
    0365 9503      INC	R16
    0366 952A      DEC	R18
    0367 F7B9      BNE	0x035F
    0368 F40E      BRTC	0x036A
    0369 2D0E      MOV	R16,R14
    036A 90E9      LD	R14,Y+
    036B 90F9      LD	R15,Y+
    036C 9129      LD	R18,Y+
    036D 9508      RET
pop_gset2:
    036E E0E2      LDI	R30,2
    036F 940C0380  JMP	pop
pop_gset3:
    0371 E0E4      LDI	R30,4
    0372 940C0380  JMP	pop
push_gset5:
    0374 92FA      ST	R15,-Y
    0375 92EA      ST	R14,-Y
push_gset4:
    0376 92DA      ST	R13,-Y
    0377 92CA      ST	R12,-Y
push_gset3:
    0378 92BA      ST	R11,-Y
    0379 92AA      ST	R10,-Y
push_gset2:
    037A 937A      ST	R23,-Y
    037B 936A      ST	R22,-Y
push_gset1:
    037C 935A      ST	R21,-Y
    037D 934A      ST	R20,-Y
    037E 9508      RET
pop_gset1:
    037F E0E1      LDI	R30,1
pop:
    0380 9149      LD	R20,Y+
    0381 9159      LD	R21,Y+
    0382 FDE0      SBRC	R30,0
    0383 9508      RET
    0384 9169      LD	R22,Y+
    0385 9179      LD	R23,Y+
    0386 FDE1      SBRC	R30,1
    0387 9508      RET
    0388 90A9      LD	R10,Y+
    0389 90B9      LD	R11,Y+
    038A FDE2      SBRC	R30,2
    038B 9508      RET
    038C 90C9      LD	R12,Y+
    038D 90D9      LD	R13,Y+
    038E FDE3      SBRC	R30,3
    038F 9508      RET
    0390 90E9      LD	R14,Y+
    0391 90F9      LD	R15,Y+
    0392 9508      RET

⌨️ 快捷键说明

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