📄 8563.lst
字号:
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 + -