📄 lcdexper.lis
字号:
.module lcdexper.c
.area text(rom, con, rel)
0000 .dbfile E:\example\icc\lcd_exper\lcdexper.c
.area lit(rom, con, rel)
0000 _Chanping1::
0000 BCF2D2D7D0C5BAC5B2C9BCAFCFB5CDB3 .byte 188,242,210,215,208,197,186,197,178,201,188,175,207,181,205,179
0010 00 .byte 0
0011 .dbsym e Chanping1 _Chanping1 A[17:17]kc
0011 _jieguo_1::
0011 C4CFB7BDD2BDBFC6B4F3D1A700 .byte 196,207,183,189,210,189,191,198,180,243,209,167,0
001E .dbsym e jieguo_1 _jieguo_1 A[13:13]kc
001E _jieguo_2::
001E C9FACEEFD2BDD1A7B9A4B3CCD1A7D4BA .byte 201,250,206,239,210,189,209,167,185,164,179,204,209,167,212,186
002E 00 .byte 0
002F .dbsym e jieguo_2 _jieguo_2 A[17:17]kc
002F _jieguo_3::
002F 32303035BCB6D3B0CFF1B9A4B3CC00 .byte 50,48,48,53,188,182,211,176,207,241,185,164,179,204,0
003E .dbsym e jieguo_3 _jieguo_3 A[15:15]kc
003E _jieguo_4::
003E C5B7D1F4B1F300 .byte 197,183,209,244,177,243,0
0045 .dbsym e jieguo_4 _jieguo_4 A[7:7]kc
.area text(rom, con, rel)
0000 .dbfile E:\example\icc\lcd_exper\lcdexper.c
0000 .dbfunc e Delay _Delay fV
0000 ; i -> R20,R21
0000 ; t -> R16,R17
.even
0000 _Delay::
0000 4A93 st -y,R20
0002 5A93 st -y,R21
0004 .dbline -1
0004 .dbline 27
0004 ; #include <iom16v.h>
0004 ; #include <macros.h>
0004 ;
0004 ; #define uchar unsigned char
0004 ; #define uint unsigned int
0004 ;
0004 ; #define DB PORTA
0004 ; /******************************************************************** */
0004 ; #define SETBIT(x,y) (x|=(1<<y)) //set bit y in byte x
0004 ; #define CLRBIT(x,y) (x&=(~(1<<y))) //clear bit y in byte x
0004 ; #define CHKBIT(x,y) (x&(1<<y)) //check bit y in byte x
0004 ; /******************************************************************** */
0004 ; #define RS 0
0004 ; #define RW 1
0004 ; #define E 2
0004 ; #define PSB 3
0004 ; #define RST 4
0004 ;
0004 ; unsigned flash char Chanping1[]={"简易信号采集系统"};
0004 ; unsigned flash char jieguo_1[]={"南方医科大学"};
0004 ; unsigned flash char jieguo_2[]={"生物医学工程学院"};
0004 ; unsigned flash char jieguo_3[]={"2005级影像工程"};
0004 ; unsigned flash char jieguo_4[]={"欧阳斌"};
0004 ;
0004 ; //***************延时*********************************/
0004 ; void Delay(uint t)
0004 ; {
0004 .dbline 28
0004 ; uint i=0;
0004 4427 clr R20
0006 5527 clr R21
0008 .dbline 29
0008 ; for(i=0;i<=t;i++);
0008 02C0 xjmp L5
000A L2:
000A .dbline 29
000A L3:
000A .dbline 29
000A 4F5F subi R20,255 ; offset = 1
000C 5F4F sbci R21,255
000E L5:
000E .dbline 29
000E 0417 cp R16,R20
0010 1507 cpc R17,R21
0012 D8F7 brsh L2
0014 X0:
0014 .dbline -2
0014 L1:
0014 .dbline 0 ; func end
0014 5991 ld R21,y+
0016 4991 ld R20,y+
0018 0895 ret
001A .dbsym r i 20 i
001A .dbsym r t 16 i
001A .dbend
001A .dbfunc e delay_ms _delay_ms fV
001A ; t2 -> R20
001A ; t -> R16,R17
.even
001A _delay_ms::
001A 4A93 st -y,R20
001C .dbline -1
001C .dbline 33
001C ; }
001C ;
001C ; void delay_ms(unsigned int t)
001C ; {
001C .dbline 34
001C ; unsigned char t2=200;
001C 48EC ldi R20,200
001E 05C0 xjmp L8
0020 L10:
0020 .dbline 35
0020 ; while(t--)while(t2--);
0020 L11:
0020 .dbline 35
0020 242E mov R2,R20
0022 3324 clr R3
0024 4150 subi R20,1
0026 2220 tst R2
0028 D9F7 brne L10
002A X1:
002A L8:
002A .dbline 35
002A 1801 movw R2,R16
002C 0150 subi R16,1
002E 1040 sbci R17,0
0030 2220 tst R2
0032 B1F7 brne L11
0034 3320 tst R3
0036 A1F7 brne L11
0038 X2:
0038 .dbline -2
0038 L6:
0038 .dbline 0 ; func end
0038 4991 ld R20,y+
003A 0895 ret
003C .dbsym r t2 20 c
003C .dbsym r t 16 i
003C .dbend
003C .dbfunc e port_init _port_init fV
.even
003C _port_init::
003C .dbline -1
003C .dbline 39
003C ; }
003C ;
003C ; void port_init(void)
003C ; {
003C .dbline 40
003C ; PORTA = 0xFF;
003C 8FEF ldi R24,255
003E 8BBB out 0x1b,R24
0040 .dbline 41
0040 ; DDRA = 0xFF;
0040 8ABB out 0x1a,R24
0042 .dbline 42
0042 ; PORTB = 0xFF;
0042 88BB out 0x18,R24
0044 .dbline 43
0044 ; DDRB = 0xFF;
0044 87BB out 0x17,R24
0046 .dbline -2
0046 L13:
0046 .dbline 0 ; func end
0046 0895 ret
0048 .dbend
0048 .dbfunc e Check_Busy _Check_Busy fV
0048 ; dat -> <dead>
.even
0048 _Check_Busy::
0048 .dbline -1
0048 .dbline 50
0048 ; }
0048 ;
0048 ; /*-----------------------------------------------------
0048 ; 状态检查函数,判断是否处于忙状态
0048 ; -------------------------------------------------------*/
0048 ; void Check_Busy(void)
0048 ; {
0048 .dbline 52
0048 ; unsigned char dat;
0048 ; CLRBIT(PORTB,RS); //RS=0
0048 C098 cbi 0x18,0
004A .dbline 53
004A ; SETBIT(PORTB,RW); //RW=1
004A C19A sbi 0x18,1
004C .dbline 54
004C ; DDRA=0x00; // portA as input
004C 2224 clr R2
004E 2ABA out 0x1a,R2
0050 L15:
0050 .dbline 56
0050 ; do
0050 ; {
0050 .dbline 57
0050 ; SETBIT(PORTB,E);
0050 C29A sbi 0x18,2
0052 .dbline 58
0052 ; CLRBIT(PORTB,E);
0052 C298 cbi 0x18,2
0054 .dbline 59
0054 ; }
0054 L16:
0054 .dbline 60
0054 ; while (PINA&0x80);
0054 CF99 sbic 0x19,7
0056 FCCF rjmp L15
0058 X3:
0058 .dbline -2
0058 L14:
0058 .dbline 0 ; func end
0058 0895 ret
005A .dbsym l dat 1 c
005A .dbend
005A .dbfunc e Write_Command _Write_Command fV
005A ; cmdcode -> R10
.even
005A _Write_Command::
005A AA92 st -y,R10
005C A02E mov R10,R16
005E .dbline -1
005E .dbline 65
005E ; }
005E ; //**********************写命令到LCD***************************/
005E ;
005E ; void Write_Command(uchar cmdcode)
005E ; {
005E .dbline 66
005E ; Check_Busy();
005E F4DF xcall _Check_Busy
0060 .dbline 67
0060 ; DDRB=0xff;
0060 8FEF ldi R24,255
0062 87BB out 0x17,R24
0064 .dbline 68
0064 ; CLRBIT(PORTB,RS);//RS=0;
0064 C098 cbi 0x18,0
0066 .dbline 69
0066 ; CLRBIT(PORTB,RW);//RW=0;
0066 C198 cbi 0x18,1
0068 .dbline 70
0068 ; DDRA=0xff;
0068 8ABB out 0x1a,R24
006A .dbline 71
006A ; DB=cmdcode;
006A ABBA out 0x1b,R10
006C .dbline 72
006C ; Delay(1);//Delay(1);
006C 01E0 ldi R16,1
006E 10E0 ldi R17,0
0070 C7DF xcall _Delay
0072 .dbline 73
0072 ; SETBIT(PORTB,E);//E=1;
0072 C29A sbi 0x18,2
0074 .dbline 74
0074 ; Delay(1);//Delay(1);Delay(1);
0074 01E0 ldi R16,1
0076 10E0 ldi R17,0
0078 C3DF xcall _Delay
007A .dbline 75
007A ; CLRBIT(PORTB,E);//E=0;
007A C298 cbi 0x18,2
007C .dbline -2
007C L18:
007C .dbline 0 ; func end
007C A990 ld R10,y+
007E 0895 ret
0080 .dbsym r cmdcode 10 c
0080 .dbend
0080 .dbfunc e Write_Data _Write_Data fV
0080 ; datacode -> R10
.even
0080 _Write_Data::
0080 AA92 st -y,R10
0082 A02E mov R10,R16
0084 .dbline -1
0084 .dbline 79
0084 ; }
0084 ; //**************************写数据到LCD*************************/
0084 ; void Write_Data(uchar datacode)
0084 ; {
0084 .dbline 80
0084 ; Check_Busy();
0084 E1DF xcall _Check_Busy
0086 .dbline 81
0086 ; DDRB=0xff;
0086 8FEF ldi R24,255
0088 87BB out 0x17,R24
008A .dbline 82
008A ; SETBIT(PORTB,RS);//RS=1;
008A C09A sbi 0x18,0
008C .dbline 83
008C ; CLRBIT(PORTB,RW);//RW=0;
008C C198 cbi 0x18,1
008E .dbline 84
008E ; DDRA=0xff;
008E 8ABB out 0x1a,R24
0090 .dbline 85
0090 ; DB=datacode;
0090 ABBA out 0x1b,R10
0092 .dbline 86
0092 ; Delay(1);//Delay(1);
0092 01E0 ldi R16,1
0094 10E0 ldi R17,0
0096 B4DF xcall _Delay
0098 .dbline 87
0098 ; SETBIT(PORTB,E);//E=1;
0098 C29A sbi 0x18,2
009A .dbline 88
009A ; Delay(1);//Delay(1);Delay(1);
009A 01E0 ldi R16,1
009C 10E0 ldi R17,0
009E B0DF xcall _Delay
00A0 .dbline 89
00A0 ; CLRBIT(PORTB,E);//E=0;
00A0 C298 cbi 0x18,2
00A2 .dbline -2
00A2 L19:
00A2 .dbline 0 ; func end
00A2 A990 ld R10,y+
00A4 0895 ret
00A6 .dbsym r datacode 10 c
00A6 .dbend
00A6 .dbfunc e Initial_LCD _Initial_LCD fV
.even
00A6 _Initial_LCD::
00A6 .dbline -1
00A6 .dbline 93
00A6 ; }
00A6 ; //**************************初始化LCD***********************/
00A6 ; void Initial_LCD(void)
00A6 ; {
00A6 .dbline 94
00A6 ; Delay(10);
00A6 0AE0 ldi R16,10
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -