?? 1602b_lcd_prj.lst
字號:
(0103) }
(0104)
(0105) /*-----------------------------------------------------------------------
(0106) LCD_set_xy : 設置LCD顯示的起始位置
(0107)
(0108) 輸入?yún)?shù):x、y : 顯示字符串的位置,X:0-15,Y:0-1
(0109) LCD第一行顯示寄存器地址:0X80-0X8F
(0110) LCD第一行顯示寄存器地址:0XC0-0XCF
(0111)
(0112) 編寫日期 :2004-8-19
(0113) 最后修改日期 :2004-8-19
(0114) -----------------------------------------------------------------------*/
(0115) void LCD_set_xy( unsigned char x, unsigned char y )
(0116) {
(0117) unsigned char address;
(0118) if (y == 0) address = 0x80 + x;
00D7 2344 TST R20
00D8 F419 BNE 0x00DC
00D9 2F46 MOV R20,R22
00DA 5840 SUBI R20,0x80
00DB C002 RJMP 0x00DE
(0119) else
(0120) address = 0xc0 + x;
00DC 2F46 MOV R20,R22
00DD 5440 SUBI R20,0x40
(0121) LCD_write_char( address, 0 );
00DE 2722 CLR R18
00DF 2733 CLR R19
00E0 2F04 MOV R16,R20
00E1 2711 CLR R17
00E2 DF8A RCALL _LCD_write_char
00E3 D078 RCALL pop_gset2
00E4 9508 RET
_LCD_write_string:
s --> R20
Y --> R10
X --> R22
00E5 D080 RCALL push_gset3
00E6 2EA2 MOV R10,R18
00E7 2F60 MOV R22,R16
00E8 814E LDD R20,Y+6
00E9 815F LDD R21,Y+7
(0122) }
(0123) /*-----------------------------------------------------------------------
(0124) LCD_write_string : 英文字符串顯示函數(shù)
(0125)
(0126) 輸入?yún)?shù):*s :英文字符串指針;
(0127) X、Y : 顯示字符串的位置
(0128)
(0129) 編寫日期 :2004-8-19
(0130) 最后修改日期 :2004-8-19
(0131) -----------------------------------------------------------------------*/
(0132) void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s)
(0133) {
(0134) LCD_set_xy( X, Y );
00EA 2D2A MOV R18,R10
00EB 2F06 MOV R16,R22
00EC DFE7 RCALL _LCD_set_xy
00ED C008 RJMP 0x00F6
(0135)
(0136) while (*s)
(0137) {
(0138) LCD_write_char( 0, *s );
00EE 01FA MOVW R30,R20
00EF 8120 LDD R18,Z+0
00F0 2733 CLR R19
00F1 2700 CLR R16
00F2 2711 CLR R17
00F3 DF79 RCALL _LCD_write_char
(0139) s ++;
00F4 5F4F SUBI R20,0xFF
00F5 4F5F SBCI R21,0xFF
00F6 01FA MOVW R30,R20
00F7 8020 LDD R2,Z+0
00F8 2022 TST R2
00F9 F7A1 BNE 0x00EE
00FA D063 RCALL pop_gset3
00FB 9508 RET
_main:
00FC 9722 SBIW R28,2
FILE: D:\test6\1602B_LCD_TEST.c
(0001) #include <iom8v.h>
(0002) #include <macros.h>
(0003) #include "1602LCD.h"
(0004)
(0005) void main(void)
(0006) {
(0007) OSCCAL=0XA5;
00FD EA85 LDI R24,0xA5
00FE BF81 OUT 0x31,R24
(0008)
(0009) DDRD |= LCD_DATA | LCD_RW;
00FF B381 IN R24,0x11
0100 6F88 ORI R24,0xF8
0101 BB81 OUT 0x11,R24
(0010) DDRC |= LCD_RS | LCD_EN;
0102 B384 IN R24,0x14
0103 6380 ORI R24,0x30
0104 BB84 OUT 0x14,R24
(0011)
(0012) LCD_init();
0105 DF49 RCALL _LCD_init
0106 C02C RJMP 0x0133
(0013)
(0014) while(1)
(0015) {
(0016) LCD_write_char(0x01,0); //顯示清屏
0107 2722 CLR R18
0108 2733 CLR R19
0109 E001 LDI R16,1
010A E010 LDI R17,0
010B DF61 RCALL _LCD_write_char
(0017) LCD_write_string(3,0,"Welcome");
010C E88F LDI R24,0x8F
010D E090 LDI R25,0
010E 8399 STD Y+1,R25
010F 8388 STD Y+0,R24
0110 2722 CLR R18
0111 E003 LDI R16,3
0112 DFD2 RCALL _LCD_write_string
(0018) LCD_write_string(1,1,"www.527dz.com!");
0113 E880 LDI R24,0x80
0114 E090 LDI R25,0
0115 8399 STD Y+1,R25
0116 8388 STD Y+0,R24
0117 E021 LDI R18,1
0118 E001 LDI R16,1
0119 DFCB RCALL _LCD_write_string
(0019) delay_nms(5000);
011A E808 LDI R16,0x88
011B E113 LDI R17,0x13
011C D032 RCALL _delay_nms
(0020) LCD_write_char(0x01,0); //顯示清屏
011D 2722 CLR R18
011E 2733 CLR R19
011F E001 LDI R16,1
0120 E010 LDI R17,0
0121 DF4B RCALL _LCD_write_char
(0021) LCD_write_string(0,0,"Tel:13308844201");
0122 E780 LDI R24,0x70
0123 E090 LDI R25,0
0124 8399 STD Y+1,R25
0125 8388 STD Y+0,R24
0126 2722 CLR R18
0127 2700 CLR R16
0128 DFBC RCALL _LCD_write_string
(0022) LCD_write_string(0,1,"527dz@527dz.com");
0129 E680 LDI R24,0x60
012A E090 LDI R25,0
012B 8399 STD Y+1,R25
012C 8388 STD Y+0,R24
012D E021 LDI R18,1
012E 2700 CLR R16
012F DFB5 RCALL _LCD_write_string
(0023) delay_nms(5000);
0130 E808 LDI R16,0x88
0131 E113 LDI R17,0x13
0132 D01C RCALL _delay_nms
0133 CFD3 RJMP 0x0107
0134 9622 ADIW R28,2
0135 9508 RET
FILE: D:\test6\delay.c
(0001) /*-----------------------------------------------------------------------
(0002) 延時函數(shù)
(0003) 系統(tǒng)時鐘:8M
(0004) -----------------------------------------------------------------------*/
(0005) void delay_1us(void) //1us延時函數(shù)
(0006) {
(0007) asm("nop");
_delay_1us:
0136 0000 NOP
0137 9508 RET
_delay_nus:
i --> R20
n --> R22
0138 D02F RCALL push_gset2
0139 01B8 MOVW R22,R16
(0008) }
(0009)
(0010) void delay_nus(unsigned int n) //N us延時函數(shù)
(0011) {
(0012) unsigned int i=0;
013A 2744 CLR R20
013B 2755 CLR R21
(0013) for (i=0;i<n;i++)
013C C003 RJMP 0x0140
(0014) delay_1us();
013D DFF8 RCALL _delay_1us
013E 5F4F SUBI R20,0xFF
013F 4F5F SBCI R21,0xFF
0140 1746 CP R20,R22
0141 0757 CPC R21,R23
0142 F3D0 BCS 0x013D
0143 D018 RCALL pop_gset2
0144 9508 RET
(0015) }
(0016)
(0017) void delay_1ms(void) //1ms延時函數(shù)
(0018) {
(0019) unsigned int i;
(0020) for (i=0;i<1140;i++);
_delay_1ms:
i --> R16
0145 2700 CLR R16
0146 2711 CLR R17
0147 C002 RJMP 0x014A
0148 5F0F SUBI R16,0xFF
0149 4F1F SBCI R17,0xFF
014A 3704 CPI R16,0x74
014B E0E4 LDI R30,4
014C 071E CPC R17,R30
014D F3D0 BCS 0x0148
014E 9508 RET
_delay_nms:
i --> R20
n --> R22
014F D018 RCALL push_gset2
0150 01B8 MOVW R22,R16
(0021) }
(0022)
(0023) void delay_nms(unsigned int n) //N ms延時函數(shù)
(0024) {
(0025) unsigned int i=0;
0151 2744 CLR R20
0152 2755 CLR R21
(0026) for (i=0;i<n;i++)
0153 C003 RJMP 0x0157
(0027) delay_1ms();
FILE: <library>
0154 DFF0 RCALL _delay_1ms
0155 5F4F SUBI R20,0xFF
0156 4F5F SBCI R21,0xFF
0157 1746 CP R20,R22
0158 0757 CPC R21,R23
0159 F3D0 BCS 0x0154
015A D001 RCALL pop_gset2
015B 9508 RET
pop_gset2:
015C E0E2 LDI R30,2
015D C010 RJMP pop
pop_gset3:
015E E0E4 LDI R30,4
015F C00E RJMP pop
pop_gset4:
0160 E0E8 LDI R30,0x8
0161 C00C RJMP pop
push_gset5:
0162 92FA ST R15,-Y
0163 92EA ST R14,-Y
push_gset4:
0164 92DA ST R13,-Y
0165 92CA ST R12,-Y
push_gset3:
0166 92BA ST R11,-Y
0167 92AA ST R10,-Y
push_gset2:
0168 937A ST R23,-Y
0169 936A ST R22,-Y
push_gset1:
016A 935A ST R21,-Y
016B 934A ST R20,-Y
016C 9508 RET
pop_gset1:
016D E0E1 LDI R30,1
pop:
016E 9149 LD R20,Y+
016F 9159 LD R21,Y+
0170 FDE0 SBRC R30,0
0171 9508 RET
0172 9169 LD R22,Y+
0173 9179 LD R23,Y+
0174 FDE1 SBRC R30,1
0175 9508 RET
0176 90A9 LD R10,Y+
0177 90B9 LD R11,Y+
0178 FDE2 SBRC R30,2
0179 9508 RET
017A 90C9 LD R12,Y+
017B 90D9 LD R13,Y+
017C FDE3 SBRC R30,3
017D 9508 RET
017E 90E9 LD R14,Y+
017F 90F9 LD R15,Y+
0180 9508 RET
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -