?? lcd_back.lis
字號:
.module LCD_back.c
.area text(rom, con, rel)
0000 .dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\點陣型LCD顯示應用設計\LCD_back.c
0000 .dbfunc e Delay_ms _Delay_ms fV
0000 ; time -> R20,R21
.even
0000 _Delay_ms::
0000 0E940000 xcall push_gset1
0004 A801 movw R20,R16
0006 .dbline -1
0006 .dbline 61
0006 ; //******************************************************************************
0006 ; // File Name : LCD.c
0006 ; // Author : Steaven
0006 ; // Created : 2008-07-27
0006 ; // Modified :
0006 ; // Revision : V0.0
0006 ; //******************************************************************************
0006 ;
0006 ; //PIN DESCRIPTION
0006 ; //01 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
0006 ; //GND VCC V0 RS RW EN D0 D1 D2 D3 D4 D5 D6 D7 BLA BLK
0006 ; //GND +5V V0 PB0 PB1 PB2 PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 GND +5V
0006 ;
0006 ; #include "iom16v.h"
0006 ; #include "DataType.h"
0006 ; #include "LCD.h"
0006 ; #include "macros.h"
0006 ;
0006 ; #define cLCD_X_MAX 64
0006 ; #define cLCD_Y_MAX 128
0006 ;
0006 ; //local functions declaration
0006 ; void Set_DI(INT8U RS);
0006 ; void Set_RW(INT8U RW);
0006 ; void Set_EN(INT8U EN);
0006 ; void Set_CS1(INT8U CS1);
0006 ; void Set_CS2(INT8U CS2);
0006 ; void Set_RST(INT8U RST);
0006 ; void Set_Data(INT8U data);
0006 ; INT8U Get_Data(void);
0006 ; void DisplayOnOff(INT8U i);
0006 ; void SetStartLine(INT8U i);
0006 ; void LCD_Command_Set_X(INT8U x);
0006 ; void LCD_Command_Set_Y(INT8U y);
0006 ; void LCD_Command_WriteByte(INT8U data);
0006 ; INT8U Read_Byte(void);
0006 ; void LCD_Reset(void);
0006 ; void LCD_Clear_Line(INT8U wStartLine,INT8U wEndLine);
0006 ; void LCD_Init(void);
0006 ; void WriteWord(INT8U const *disp,INT8U x,INT8U y);
0006 ; void WriteCharacter(const INT8U *disp,INT8U x,INT8U y,INT8U cs);
0006 ; void WritePIC(const INT8U *disp);
0006 ; void LCD_Write_Char(INT8U y,INT8U x,const INT8U *pdata);
0006 ; void LCD_Write_Dot(INT8U x,INT8U y);
0006 ; INT8U LCD_Read_Data(INT8U x,INT8U y);
0006 ; void LCD_Write_Data(INT8U x,INT8U y,INT8U data);
0006 ; void LCD_Write_Picture(INT8U x1,INT8U y1,INT8U x2,INT8U y2,const INT8U *pdata);
0006 ;
0006 ; /*
0006 ; void nop(INT8U cnt)
0006 ; {
0006 ; while(cnt--) ;
0006 ; }
0006 ;
0006 ; void Delay(INT8U cnt)
0006 ; {
0006 ; while(cnt--) ;
0006 ; }
0006 ; */
0006 ; void Delay_ms(INT16U time)
0006 ; {
0006 .dbline 62
0006 ; for(;time!=0;time--)
0006 06C0 xjmp L5
0008 L2:
0008 .dbline 63
0008 .dbline 64
0008 04EF ldi R16,500
000A 11E0 ldi R17,1
000C 0E940000 xcall _Delay
0010 .dbline 65
0010 L3:
0010 .dbline 62
0010 4150 subi R20,1
0012 5040 sbci R21,0
0014 L5:
0014 .dbline 62
0014 4030 cpi R20,0
0016 4507 cpc R20,R21
0018 B9F7 brne L2
001A X0:
001A .dbline -2
001A .dbline 66
001A ; {
001A ; Delay(500);
001A ; }
001A ; }
001A L1:
001A 0E940000 xcall pop_gset1
001E .dbline 0 ; func end
001E 0895 ret
0020 .dbsym r time 20 i
0020 .dbend
0020 .dbfunc e Set_DI _Set_DI fV
0020 ; RS -> R16
.even
0020 _Set_DI::
0020 .dbline -1
0020 .dbline 79
0020 ;
0020 ;
0020 ; #define nop(X) {;}
0020 ; #define Delay(X) {;}
0020 ;
0020 ; //******************************************************************************
0020 ; // Function : Set_RS
0020 ; // Input : RS - RS Control Line Level
0020 ; // Output : none
0020 ; // Description : LCD(1602) Low Level Interface Function
0020 ; //******************************************************************************
0020 ; void Set_DI(INT8U RS)
0020 ; {
0020 .dbline 80
0020 ; if(RS == 0)
0020 0023 tst R16
0022 11F4 brne L7
0024 .dbline 81
0024 ; {
0024 .dbline 82
0024 ; PORTB &= ~0x01;
0024 C098 cbi 0x18,0
0026 .dbline 83
0026 ; }
0026 01C0 xjmp L8
0028 L7:
0028 .dbline 85
0028 .dbline 86
0028 C09A sbi 0x18,0
002A .dbline 87
002A L8:
002A .dbline -2
002A .dbline 88
002A ; else
002A ; {
002A ; PORTB |= 0x01;
002A ; }
002A ; }
002A L6:
002A .dbline 0 ; func end
002A 0895 ret
002C .dbsym r RS 16 c
002C .dbend
002C .dbfunc e Set_RW _Set_RW fV
002C ; RW -> R16
.even
002C _Set_RW::
002C .dbline -1
002C .dbline 97
002C ;
002C ; //******************************************************************************
002C ; // Function : Set_RW
002C ; // Input : RW - RW Control Line Level
002C ; // Output : none
002C ; // Description : Low Level Interface Function
002C ; //******************************************************************************
002C ; void Set_RW(INT8U RW)
002C ; {
002C .dbline 98
002C ; if(RW == 0)
002C 0023 tst R16
002E 11F4 brne L10
0030 .dbline 99
0030 ; {
0030 .dbline 100
0030 ; PORTB &= ~0x02;
0030 C198 cbi 0x18,1
0032 .dbline 101
0032 ; }
0032 01C0 xjmp L11
0034 L10:
0034 .dbline 103
0034 .dbline 104
0034 C19A sbi 0x18,1
0036 .dbline 105
0036 L11:
0036 .dbline -2
0036 .dbline 106
0036 ; else
0036 ; {
0036 ; PORTB |= 0x02;
0036 ; }
0036 ; }
0036 L9:
0036 .dbline 0 ; func end
0036 0895 ret
0038 .dbsym r RW 16 c
0038 .dbend
0038 .dbfunc e Set_EN _Set_EN fV
0038 ; EN -> R16
.even
0038 _Set_EN::
0038 .dbline -1
0038 .dbline 115
0038 ;
0038 ; //******************************************************************************
0038 ; // Function : Set_EN
0038 ; // Input : RW - RW Control Line Level
0038 ; // Output : none
0038 ; // Description : Low Level Interface Function
0038 ; //******************************************************************************
0038 ; void Set_EN(INT8U EN)
0038 ; {
0038 .dbline 116
0038 ; if(EN == 0)
0038 0023 tst R16
003A 11F4 brne L13
003C .dbline 117
003C ; {
003C .dbline 118
003C ; PORTB &= ~0x04;
003C C298 cbi 0x18,2
003E .dbline 119
003E ; }
003E 01C0 xjmp L14
0040 L13:
0040 .dbline 121
0040 .dbline 122
0040 C29A sbi 0x18,2
0042 .dbline 123
0042 L14:
0042 .dbline -2
0042 .dbline 124
0042 ; else
0042 ; {
0042 ; PORTB |= 0x04;
0042 ; }
0042 ; }
0042 L12:
0042 .dbline 0 ; func end
0042 0895 ret
0044 .dbsym r EN 16 c
0044 .dbend
0044 .dbfunc e Set_CS2 _Set_CS2 fV
0044 ; CS2 -> R16
.even
0044 _Set_CS2::
0044 .dbline -1
0044 .dbline 133
0044 ;
0044 ; //******************************************************************************
0044 ; // Function : Set_CS2
0044 ; // Input : CS2 - CS2 Control Line Level
0044 ; // Output : none
0044 ; // Description : Low Level Interface Function
0044 ; //******************************************************************************
0044 ; void Set_CS2(INT8U CS2)
0044 ; {
0044 .dbline 134
0044 ; if(CS2 == 0)
0044 0023 tst R16
0046 11F4 brne L16
0048 .dbline 135
0048 ; {
0048 .dbline 136
0048 ; PORTC &= ~0x20;
0048 AD98 cbi 0x15,5
004A .dbline 137
004A ; }
004A 01C0 xjmp L17
004C L16:
004C .dbline 139
004C .dbline 140
004C AD9A sbi 0x15,5
004E .dbline 141
004E L17:
004E .dbline -2
004E .dbline 142
004E ; else
004E ; {
004E ; PORTC |= 0x20;
004E ; }
004E ; }
004E L15:
004E .dbline 0 ; func end
004E 0895 ret
0050 .dbsym r CS2 16 c
0050 .dbend
0050 .dbfunc e Set_CS1 _Set_CS1 fV
0050 ; CS1 -> R16
.even
0050 _Set_CS1::
0050 .dbline -1
0050 .dbline 151
0050 ;
0050 ; //******************************************************************************
0050 ; // Function : Set_CS1
0050 ; // Input : CS1 - CS1 Control Line Level
0050 ; // Output : none
0050 ; // Description : Low Level Interface Function
0050 ; //******************************************************************************
0050 ; void Set_CS1(INT8U CS1)
0050 ; {
0050 .dbline 152
0050 ; if(CS1 == 0)
0050 0023 tst R16
0052 11F4 brne L19
0054 .dbline 153
0054 ; {
0054 .dbline 154
0054 ; PORTC &= ~0x40;
0054 AE98 cbi 0x15,6
0056 .dbline 155
0056 ; }
0056 01C0 xjmp L20
0058 L19:
0058 .dbline 157
0058 .dbline 158
0058 AE9A sbi 0x15,6
005A .dbline 159
005A L20:
005A .dbline -2
005A .dbline 160
005A ; else
005A ; {
005A ; PORTC |= 0x40;
005A ; }
005A ; }
005A L18:
005A .dbline 0 ; func end
005A 0895 ret
005C .dbsym r CS1 16 c
005C .dbend
005C .dbfunc e Set_RST _Set_RST fV
005C ; RST -> R16
.even
005C _Set_RST::
005C .dbline -1
005C .dbline 165
005C ;
005C ;
005C ; //sbit RST=PC7;
005C ; void Set_RST(INT8U RST)
005C ; {
005C .dbline 166
005C ; if(RST == 0)
005C 0023 tst R16
005E 11F4 brne L22
0060 .dbline 167
0060 ; {
0060 .dbline 168
0060 ; PORTC &= ~0x80;
0060 AF98 cbi 0x15,7
0062 .dbline 169
0062 ; }
0062 01C0 xjmp L23
0064 L22:
0064 .dbline 171
0064 .dbline 172
0064 AF9A sbi 0x15,7
0066 .dbline 173
0066 L23:
0066 .dbline -2
0066 .dbline 174
0066 ; else
0066 ; {
0066 ; PORTC |= 0x80;
0066 ; }
0066 ; }
0066 L21:
0066 .dbline 0 ; func end
0066 0895 ret
0068 .dbsym r RST 16 c
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -