?? ad轉換.lst
字號:
2EB 5747 SUBI R20,0x77
(0095) break;
2EC C005 RJMP 0x02F2
(0096) case 3:
(0097) address = 0x98 + y+1; //計算顯示地址
2ED 2F46 MOV R20,R22
2EE 5647 SUBI R20,0x67
(0098) break;
2EF C002 RJMP 0x02F2
(0099) default:address = 0x80 + y;
2F0 2F46 MOV R20,R22
2F1 5840 SUBI R20,0x80
(0100) }
(0101) WR_control( address); //寫地址命令
2F2 2F04 MOV R16,R20
2F3 DFB1 RCALL _WR_control
2F4 940C 045C JMP pop_xgsetF00C
_LCD_Write_string:
s --> R20
Y --> R12
X --> R10
2F6 940E 0463 CALL push_xgset303C
2F8 2EC2 MOV R12,R18
2F9 2EA0 MOV R10,R16
2FA 814E LDD R20,Y+6
2FB 815F LDD R21,Y+7
(0102) }
(0103) //**************************************************************************
(0104) /*******************************************************/
(0105) /****** 函數名稱: LCD_write_string() ******/
(0106) /****** 功 能: 中英文字符串顯示函數 ******/
(0107) /****** 參 數: *s--英文字符串指針 ******/
(0108) /****** X、Y--顯示字符串的位置 ******/
(0109) /****** 返回值 : 無 ******/
(0110) /*******************************************************/
(0111) void LCD_Write_string(unsigned char X,unsigned char Y,unsigned char *s)
(0112) {
(0113)
(0114) LCD_address( X, Y ); //寫顯示地址
2FC 2D2C MOV R18,R12
2FD 2D0A MOV R16,R10
2FE DFCF RCALL _LCD_address
2FF C005 RJMP 0x0305
(0115) while (*s) //是否到字符串尾
(0116) {
(0117) WR_dat (*s ); //寫顯示數據
300 01FA MOVW R30,R20
301 8100 LDD R16,Z+0
302 DF8F RCALL _WR_dat
(0118) s ++; //字符串地址加1
303 5F4F SUBI R20,0xFF
304 4F5F SBCI R21,0xFF
305 01FA MOVW R30,R20
306 8020 LDD R2,Z+0
307 2022 TST R2
308 F7B9 BNE 0x0300
309 940C 046A JMP pop_xgset303C
(0119) }
(0120) }
(0121)
(0122)
(0123) /******************************************************************************/
(0124) //函數功能:將BCD碼轉換為ASCII碼函數
(0125) //輸入數據:BCD
(0126) //輸出:ASCII
(0127) //作者:韓紅瑞
(0128) //修改時間:2006-08-31
(0129) /******************************************************************************/
(0130) unsigned char BCD_ASCII(unsigned char bcd)
(0131) {
(0132) bcd &= 0x0F;
_BCD_ASCII:
bcd --> R16
30B 700F ANDI R16,0xF
(0133) if(bcd > 9)
30C E089 LDI R24,0x9
30D 1780 CP R24,R16
30E F410 BCC 0x0311
(0134) bcd +=('7'); // 將A~F轉換為ASCII
30F 5C09 SUBI R16,0xC9
310 C001 RJMP 0x0312
(0135) else
(0136) bcd += '0'; // 將0~9轉換為ASCII 0~9
311 5D00 SUBI R16,0xD0
(0137) return(bcd);
312 9508 RET
_LCD_writeasc:
data --> Y,+4
y --> R12
x --> R10
313 940E 043C CALL push_xgset003C
315 2EC2 MOV R12,R18
316 2EA0 MOV R10,R16
(0138) }
(0139)
(0140)
(0141) void LCD_writeasc(unsigned char x, unsigned char y, unsigned char data)
(0142) {
(0143) LCD_address(x,y);
317 2D2C MOV R18,R12
318 2D0A MOV R16,R10
319 DFB4 RCALL _LCD_address
(0144) WR_dat(data);
31A 810C LDD R16,Y+4
31B DF76 RCALL _WR_dat
31C 940C 042A JMP pop_xgset003C
(0145) }
(0146)
(0147) void Lcd_INT()
(0148) {
(0149) DDRA|=BIT(1);
_Lcd_INT:
31E 9AD1 SBI 0x1A,1
(0150) DDRA|=BIT(3);
31F 9AD3 SBI 0x1A,3
(0151) lcd_control();
320 DF97 RCALL _lcd_control
321 9508 RET
_lcd_writechar:
number --> R10
Y --> R14
X --> R12
322 940E 043A CALL push_xgset00FC
324 2EE2 MOV R14,R18
325 2EC0 MOV R12,R16
326 80AE LDD R10,Y+6
(0152) }
(0153)
(0154) void lcd_writechar(unsigned char X,unsigned char Y,unsigned char number)
(0155) {
(0156) LCD_address(X,Y);
327 2D2E MOV R18,R14
328 2D0C MOV R16,R12
329 DFA4 RCALL _LCD_address
(0157) WR_dat(BCD_ASCII(number>>4));
32A 2D0A MOV R16,R10
32B 9502 SWAP R16
32C 700F ANDI R16,0xF
32D DFDD RCALL _BCD_ASCII
32E DF63 RCALL _WR_dat
(0158) WR_dat(BCD_ASCII(number));
32F 2D0A MOV R16,R10
330 DFDA RCALL _BCD_ASCII
331 DF60 RCALL _WR_dat
332 940C 042F JMP pop_xgset00FC
_lcd_write2:
number --> R10
Y --> R14
X --> R12
334 940E 043A CALL push_xgset00FC
336 2EE2 MOV R14,R18
337 2EC0 MOV R12,R16
338 80AE LDD R10,Y+6
339 80BF LDD R11,Y+7
(0159) }
(0160)
(0161) void lcd_write2(unsigned char X,unsigned char Y,unsigned int number)
(0162) {
(0163) LCD_address(X,Y);
33A 2D2E MOV R18,R14
33B 2D0C MOV R16,R12
33C DF91 RCALL _LCD_address
(0164) WR_dat(a[(number/1000)]);
33D EE28 LDI R18,0xE8
33E E033 LDI R19,3
33F 0185 MOVW R16,R10
340 940E 0410 CALL div16u
342 01F8 MOVW R30,R16
343 E680 LDI R24,0x60
344 E090 LDI R25,0
345 0FE8 ADD R30,R24
346 1FF9 ADC R31,R25
347 8100 LDD R16,Z+0
348 DF49 RCALL _WR_dat
(0165) WR_dat(a[(number%1000/100)]);
349 EE28 LDI R18,0xE8
34A E033 LDI R19,3
34B 0185 MOVW R16,R10
34C 940E 040E CALL mod16u
34E E624 LDI R18,0x64
34F E030 LDI R19,0
350 940E 0410 CALL div16u
352 01F8 MOVW R30,R16
353 E680 LDI R24,0x60
354 E090 LDI R25,0
355 0FE8 ADD R30,R24
356 1FF9 ADC R31,R25
357 8100 LDD R16,Z+0
358 DF39 RCALL _WR_dat
(0166) WR_dat(a[(number%100/10)]);
359 E624 LDI R18,0x64
35A E030 LDI R19,0
35B 0185 MOVW R16,R10
35C 940E 040E CALL mod16u
35E E02A LDI R18,0xA
35F E030 LDI R19,0
360 940E 0410 CALL div16u
362 01F8 MOVW R30,R16
363 E680 LDI R24,0x60
364 E090 LDI R25,0
365 0FE8 ADD R30,R24
366 1FF9 ADC R31,R25
367 8100 LDD R16,Z+0
368 DF29 RCALL _WR_dat
(0167) WR_dat(a[(number%10)]);
369 E02A LDI R18,0xA
36A E030 LDI R19,0
36B 0185 MOVW R16,R10
36C 940E 040E CALL mod16u
36E 01F8 MOVW R30,R16
36F E680 LDI R24,0x60
370 E090 LDI R25,0
371 0FE8 ADD R30,R24
372 1FF9 ADC R31,R25
373 8100 LDD R16,Z+0
374 DF1D RCALL _WR_dat
375 940C 042F JMP pop_xgset00FC
_ShowBmp:
a --> R10
y --> R22
i --> R12
x --> R20
377 940E 0471 CALL push_xgsetF03C
(0168)
(0169) }
(0170)
(0171) //#if LCD12864==TRUE //條件編譯指令
(0172) //#pragma data:code //指定存儲位置為Flash
(0173) const unsigned char Bitmap[]={/*-- 寬度x高度=128x64圖像 --*/
(0174)
(0175)
(0176)
(0177) 0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0178) 0x00,0x00,0x00,0x00,0x00,0x82,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0179) 0x00,0x00,0x00,0x00,0x01,0x06,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0180) 0x00,0x00,0x00,0x00,0x02,0x04,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0181) 0x00,0x00,0x00,0x00,0x04,0x04,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0182) 0x00,0x00,0x00,0x00,0x04,0x04,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0183) 0x00,0x00,0x00,0x00,0x04,0x04,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0184) 0x00,0x00,0x00,0x00,0x04,0x04,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0185) 0x00,0x00,0x00,0x0F,0xFE,0x04,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0186) 0x00,0x00,0x00,0x10,0x01,0xFF,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0187) 0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0188) 0x00,0x00,0x3F,0xFC,0x00,0x00,0xC8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0189) 0x00,0x00,0x04,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0190) 0x00,0x00,0x04,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0191) 0x00,0x00,0x04,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0192) 0x00,0x00,0x02,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0193) 0x00,0x00,0x01,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0194) 0x00,0x00,0x01,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0195) 0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0196) 0x00,0x00,0xFF,0xF0,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0197) 0x00,0x00,0x80,0x00,0x06,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0198) 0x00,0x00,0x80,0x00,0x08,0x00,0x04,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,
(0199) 0x00,0x00,0x7F,0xF0,0x09,0xE0,0x04,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
(0200) 0x00,0x00,0x60,0x00,0x08,0x20,0x04,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
(0201) 0x00,0x00,0x40,0x00,0x08,0x20,0x04,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
(0202) 0x00,0x00,0xC0,0x00,0x0F,0xE0,0x04,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
(0203) 0x00,0x00,0x80,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
(0204) 0x00,0x00,0x80,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
(0205) 0x00,0x00,0x80,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,
(0206) 0x00,0x00,0x80,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,
(0207) 0x00,0x00,0x80,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,
(0208) 0x00,0x00,0x80,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,
(0209) 0x00,0x00,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,
(0210) 0x00,0x00,0x80,0x3F,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,
(0211) 0x00,0x00,0x80,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x20,0x0F,0x00,0x00,0x00,
(0212) 0x00,0x00,0x80,0x00,0x00,0x00,0x0F,0x80,0x00,0x00,0x00,0x40,0x01,0x00,0x00,0x00,
(0213) 0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x7F,0xFF,0xFC,0x00,0x40,0x01,0x00,0x00,0x00,
(0214) 0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,
(0215) 0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x03,0xE0,0x00,0x80,0x01,0x00,0x00,0x00,
(0216) 0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x06,0x20,0x01,0x00,0x01,0x00,0x00,0x00,
(0217) 0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x03,0x00,0x01,0x00,0x00,0x00,
(0218) 0x00,0x00,0x9F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x3C,0x0C,0x00,0x01,0x00,0x00,0x00,
(0219) 0x00,0x00,0x80,0x00,0x0F,0xC0,0x00,0x00,0x00,0x24,0x30,0x00,0x01,0x00,0x00,0x00,
(0220) 0x00,0x00,0x80,0x00,0x00,0x3C,0x00,0x00,0x00,0x24,0x40,0x00,0x01,0x00,0x00,0x00,
(0221) 0x00,0x00,0x80,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xE4,0x80,0x00,0x01,0x00,0x00,0x00,
(0222) 0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x80,0x00,0x01,0x00,0x00,0x00,
(0223) 0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x01,0x00,0x00,0x00,
(0224) 0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x1E,0x00,0x00,0x00,
(0225) 0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x05,0x00,0x03,0xE0,0x00,0x00,0x00,
(0226) 0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x04,0x80,0x0C,0x00,0x00,0x00,0x00,
(0227) 0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x04,0x7F,0xF0,0x00,0x00,0x00,0x00,
(0228) 0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
(0229) 0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,
(0230) 0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,
(0231) 0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
(0232) 0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
(0233) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0234) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0235) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0236) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0237) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0238) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0239) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0240) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0241)
(0242) };
(0243)
(0244) /*******************************************************/
(0245) /****** 函數名稱: ShowBmp() ******/
(0246) /****** 功 能: 顯示一幅128*64的BMP位圖 ******/
(0247) /****** 參 數: 無 ******/
(0248) /****** 返回值 : 無 ******/
(0249) /*******************************************************/
(0250) void ShowBmp(void)
(0251) {
(0252) unsigned int i,a,x=0,y=0;
379 2744 CLR R20
37A 2755 CLR R21
37B 2766 CLR R22
37C 2777 CLR R23
(0253) WR_control(0x34);
37D E304 LDI R16,0x34
37E DF26 RCALL _WR_control
(0254) for(a=0;a<32;a++)
37F 24AA CLR R10
380 24BB CLR R11
381 C053 RJMP 0x03D5
(0255) {
(0256) WR_control(0x80+a);
382 2D0A MOV R16,R10
383 5800 SUBI R16,0x80
384 4F1F SBCI R17,0xFF
385 DF1F RCALL _WR_control
(0257) WR_control(0x80);
386 E800 LDI R16,0x80
387 DF1D RCALL _WR_control
(0258) for(i=0;i<8;i++)
388 24CC CLR R12
389 24DD CLR R13
38A C018 RJMP 0x03A3
(0259) {
(0260) WR_dat(Bitmap[y+x]);
38B 01FB MOVW R30,R22
38C 0FE4 ADD R30,R20
38D 1FF5 ADC R31,R21
38E E584 LDI R24,0x54
38F E090 LDI R25,0
390 0FE8 ADD R30,R24
391 1FF9 ADC R31,R25
392 9104 LPM R16,0(Z)
393 DEFE RCALL _WR_dat
(0261) WR_dat(Bitmap[y+x+1]);
394 01FB MOVW R30,R22
395 0FE4 ADD R30,R20
396 1FF5 ADC R31,R21
397 9631 ADIW R30,1
398 E584 LDI R24,0x54
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -