?? 24cxx_test.lis
字號:
01BC ; LCD_RS_DDR|=LCD_RS;
01BC A29A sbi 0x14,2
01BE .dbline 38
01BE ; delay_ms(15);
01BE 0FE0 ldi R16,15
01C0 10E0 ldi R17,0
01C2 39DF xcall _delay_ms
01C4 .dbline 39
01C4 ; LCD_write_char(0x28,0); //4位顯示
01C4 2227 clr R18
01C6 3327 clr R19
01C8 08E2 ldi R16,40
01CA 10E0 ldi R17,0
01CC 2AD0 xcall _LCD_write_char
01CE .dbline 40
01CE ; delay_ms(15);
01CE 0FE0 ldi R16,15
01D0 10E0 ldi R17,0
01D2 31DF xcall _delay_ms
01D4 .dbline 41
01D4 ; LCD_write_char(0x0c,0); //顯示開
01D4 2227 clr R18
01D6 3327 clr R19
01D8 0CE0 ldi R16,12
01DA 10E0 ldi R17,0
01DC 22D0 xcall _LCD_write_char
01DE .dbline 42
01DE ; delay_ms(15);
01DE 0FE0 ldi R16,15
01E0 10E0 ldi R17,0
01E2 29DF xcall _delay_ms
01E4 .dbline 43
01E4 ; LCD_write_char(0x01,0); //清屏
01E4 2227 clr R18
01E6 3327 clr R19
01E8 01E0 ldi R16,1
01EA 10E0 ldi R17,0
01EC 1AD0 xcall _LCD_write_char
01EE .dbline 44
01EE ; clear();
01EE 6AD0 xcall _clear
01F0 .dbline -2
01F0 L81:
01F0 .dbline 0 ; func end
01F0 0895 ret
01F2 .dbend
01F2 .dbfunc e LCD_set_xy _LCD_set_xy fV
01F2 ; address0 -> R20
01F2 ; y -> R10
01F2 ; x -> R22
.even
01F2 _LCD_set_xy::
01F2 0E940000 xcall push_xgsetF00C
01F6 A22E mov R10,R18
01F8 602F mov R22,R16
01FA .dbline -1
01FA .dbline 53
01FA ; }
01FA ;
01FA ; /*------------------------------------------------------------
01FA ; 函數(shù): 設置顯示地址
01FA ; para: x---the display address of a line limit: 0---15
01FA ; y---the display line limit 0 or 1
01FA ; --------------------------------------------------------------*/
01FA ; void LCD_set_xy(unsigned char x, unsigned char y) //寫地址函數(shù)
01FA ; {
01FA .dbline 55
01FA ; unsigned char address;
01FA ; if(y ==0)
01FA AA20 tst R10
01FC 19F4 brne L83
01FE X27:
01FE .dbline 56
01FE ; address=0x80+x; //the first line
01FE 462F mov R20,R22
0200 4058 subi R20,128 ; addi 128
0202 02C0 xjmp L84
0204 L83:
0204 .dbline 58
0204 ; else
0204 ; address=0xc0+x; //the second line
0204 462F mov R20,R22
0206 4054 subi R20,64 ; addi 192
0208 L84:
0208 .dbline 59
0208 ; LCD_write_char(address,0);
0208 2227 clr R18
020A 3327 clr R19
020C 042F mov R16,R20
020E 1127 clr R17
0210 08D0 xcall _LCD_write_char
0212 .dbline -2
0212 L82:
0212 .dbline 0 ; func end
0212 0C940000 xjmp pop_xgsetF00C
0216 .dbsym r address0 20 c
0216 .dbsym r y 10 c
0216 .dbsym r x 22 c
0216 .dbend
0216 .dbfunc e LCD_en_write _LCD_en_write fV
.even
0216 _LCD_en_write::
0216 .dbline -1
0216 .dbline 65
0216 ; }
0216 ; /*-------------------------------------------------------------
0216 ; 函數(shù): lcd1602使能
0216 ; *--------------------------------------------------------------*/
0216 ; void LCD_en_write(void) //液晶使能
0216 ; {
0216 .dbline 66
0216 ; LCD_EN_PORT|=LCD_EN;
0216 AB9A sbi 0x15,3
0218 .dbline 67
0218 ; delay_us(5);
0218 05E0 ldi R16,5
021A 10E0 ldi R17,0
021C F3DE xcall _delay_us
021E .dbline 68
021E ; LCD_EN_PORT&=~LCD_EN;
021E AB98 cbi 0x15,3
0220 .dbline -2
0220 L85:
0220 .dbline 0 ; func end
0220 0895 ret
0222 .dbend
0222 .dbfunc e LCD_write_char _LCD_write_char fV
0222 ; data_temp0 -> R22,R23
0222 ; command_temp0 -> R20,R21
0222 ; data -> R12,R13
0222 ; command -> R10,R11
.even
0222 _LCD_write_char::
0222 0E940000 xcall push_xgsetF03C
0226 6901 movw R12,R18
0228 5801 movw R10,R16
022A .dbline -1
022A .dbline 76
022A ; }
022A ; /*------------------------------------------------------------
022A ; 函數(shù): 寫命令或數(shù)據(jù)到lcd1602
022A ; 參數(shù):command: 0---寫數(shù)據(jù), 1---寫命令
022A ; data: 所要寫的命令或數(shù)據(jù)
022A ; *-------------------------------------------------------------*/
022A ; void LCD_write_char(unsigned command,unsigned data)
022A ; {
022A .dbline 78
022A ; unsigned command_temp,data_temp;
022A ; command_temp=command;
022A A501 movw R20,R10
022C .dbline 79
022C ; data_temp=data;
022C B601 movw R22,R12
022E .dbline 80
022E ; delay_us(25);
022E 09E1 ldi R16,25
0230 10E0 ldi R17,0
0232 E8DE xcall _delay_us
0234 .dbline 81
0234 ; if(command==0)
0234 4030 cpi R20,0
0236 4507 cpc R20,R21
0238 11F5 brne L87
023A X28:
023A .dbline 82
023A ; {
023A .dbline 83
023A ; LCD_RS_PORT|=LCD_RS; //RS=1
023A AA9A sbi 0x15,2
023C .dbline 84
023C ; LCD_DATA_PORT&=0X0f;
023C 85B3 in R24,0x15
023E 8F70 andi R24,15
0240 85BB out 0x15,R24
0242 .dbline 85
0242 ; LCD_DATA_PORT|=data_temp&0xf0; //寫高四位
0242 CB01 movw R24,R22
0244 807F andi R24,240
0246 9070 andi R25,0
0248 25B2 in R2,0x15
024A 3324 clr R3
024C 282A or R2,R24
024E 392A or R3,R25
0250 25BA out 0x15,R2
0252 .dbline 86
0252 ; LCD_en_write();
0252 E1DF xcall _LCD_en_write
0254 .dbline 87
0254 ; data_temp=data_temp<<4;
0254 660F lsl R22
0256 771F rol R23
0258 660F lsl R22
025A 771F rol R23
025C 660F lsl R22
025E 771F rol R23
0260 660F lsl R22
0262 771F rol R23
0264 .dbline 88
0264 ; LCD_DATA_PORT&=0X0f;
0264 85B3 in R24,0x15
0266 8F70 andi R24,15
0268 85BB out 0x15,R24
026A .dbline 89
026A ; LCD_DATA_PORT|=data_temp&0xf0; //寫低四位
026A CB01 movw R24,R22
026C 807F andi R24,240
026E 9070 andi R25,0
0270 25B2 in R2,0x15
0272 3324 clr R3
0274 282A or R2,R24
0276 392A or R3,R25
0278 25BA out 0x15,R2
027A .dbline 90
027A ; LCD_en_write();
027A CDDF xcall _LCD_en_write
027C .dbline 91
027C ; }
027C 21C0 xjmp L88
027E L87:
027E .dbline 93
027E ; else
027E ; {
027E .dbline 94
027E ; LCD_RS_PORT&=~LCD_RS; //RS=0
027E AA98 cbi 0x15,2
0280 .dbline 95
0280 ; LCD_DATA_PORT&=0X0f;
0280 85B3 in R24,0x15
0282 8F70 andi R24,15
0284 85BB out 0x15,R24
0286 .dbline 96
0286 ; LCD_DATA_PORT|=command_temp&0xf0; //寫高四位
0286 CA01 movw R24,R20
0288 807F andi R24,240
028A 9070 andi R25,0
028C 25B2 in R2,0x15
028E 3324 clr R3
0290 282A or R2,R24
0292 392A or R3,R25
0294 25BA out 0x15,R2
0296 .dbline 97
0296 ; LCD_en_write();
0296 BFDF xcall _LCD_en_write
0298 .dbline 98
0298 ; command_temp=command_temp<<4;
0298 440F lsl R20
029A 551F rol R21
029C 440F lsl R20
029E 551F rol R21
02A0 440F lsl R20
02A2 551F rol R21
02A4 440F lsl R20
02A6 551F rol R21
02A8 .dbline 99
02A8 ; LCD_DATA_PORT&=0x0f;
02A8 85B3 in R24,0x15
02AA 8F70 andi R24,15
02AC 85BB out 0x15,R24
02AE .dbline 100
02AE ; LCD_DATA_PORT|=command_temp&0xf0; //寫低四位
02AE CA01 movw R24,R20
02B0 807F andi R24,240
02B2 9070 andi R25,0
02B4 25B2 in R2,0x15
02B6 3324 clr R3
02B8 282A or R2,R24
02BA 392A or R3,R25
02BC 25BA out 0x15,R2
02BE .dbline 101
02BE ; LCD_en_write();
02BE ABDF xcall _LCD_en_write
02C0 .dbline 102
02C0 ; }
02C0 L88:
02C0 .dbline -2
02C0 L86:
02C0 .dbline 0 ; func end
02C0 0C940000 xjmp pop_xgsetF03C
02C4 .dbsym r data_temp0 22 i
02C4 .dbsym r command_temp0 20 i
02C4 .dbsym r data 12 i
02C4 .dbsym r command 10 i
02C4 .dbend
02C4 .dbfunc e clear _clear fV
02C4 ; i2 -> R20
02C4 ; i0 -> R20
.even
02C4 _clear::
02C4 4A93 st -y,R20
02C6 .dbline -1
02C6 .dbline 108
02C6 ; }
02C6 ; /*-------------------------------------------------------------
02C6 ; 函數(shù): 清屏lcd1602
02C6 ; ---------------------------------------------------------------*/
02C6 ; void clear(void)
02C6 ; {
02C6 .dbline 110
02C6 ; unsigned char i;
02C6 ; LCD_set_xy(0,0);
02C6 2227 clr R18
02C8 0027 clr R16
02CA 93DF xcall _LCD_set_xy
02CC .dbline 111
02CC ; for(i=0;i<16;i++)
02CC 4427 clr R20
02CE 06C0 xjmp L93
02D0 L90:
02D0 .dbline 112
02D0 ; LCD_write_char(0,' ');
02D0 20E2 ldi R18,32
02D2 30E0 ldi R19,0
02D4 0027 clr R16
02D6 1127 clr R17
02D8 A4DF xcall _LCD_write_char
02DA L91:
02DA .dbline 111
02DA 4395 inc R20
02DC L93:
02DC .dbline 111
02DC 4031 cpi R20,16
02DE C0F3 brlo L90
02E0 X29:
02E0 .dbline 113
02E0 ; LCD_set_xy(0,1);
02E0 21E0 ldi R18,1
02E2 0027 clr R16
02E4 86DF xcall _LCD_set_xy
02E6 .dbline 114
02E6 ; for(i=0;i<16;i++)
02E6 4427 clr R20
02E8 06C0 xjmp L97
02EA L94:
02EA .dbline 115
02EA ; LCD_write_char(0,' ');
02EA 20E2 ldi R18,32
02EC 30E0 ldi R19,0
02EE 0027 clr R16
02F0 1127 clr R17
02F2 97DF xcall _LCD_write_char
02F4 L95:
02F4 .dbline 114
02F4 4395 inc R20
02F6 L97:
02F6 .dbline 114
02F6 4031 cpi R20,16
02F8 C0F3 brlo L94
02FA X30:
02FA .dbline -2
02FA L89:
02FA .dbline 0 ; func end
02FA 4991 ld R20,y+
02FC 0895 ret
02FE .dbsym r i2 20 c
02FE .dbsym r i0 20 c
02FE .dbend
02FE .dbfunc e LCD_write_string _LCD_write_string fV
02FE ; s -> R20,R21
02FE ; Y -> R12
02FE ; X -> R10
.even
02FE _LCD_write_string::
02FE 0E940000 xcall push_xgset303C
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -