📄 12864.lis
字号:
.module _12864.c
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\Administrator\桌面\16实验\串口显示0\12864.c
0000 .dbfile C:\DOCUME~1\Administrator\桌面\16实验\串口显示0\12864_chuankou_drive.h
0000 .dbfunc e delay_us _delay_us fV
0000 ; t -> R16,R17
.even
0000 _delay_us::
0000 .dbline -1
0000 .dbline 21
0000 ; #include<iom8v.h>
0000 ; #include<macros.h>
0000 ; #define uchar unsigned char
0000 ; #define uint unsigned int
0000 ; #define CS_0 PORTD&=~(1<<PDD4) //片选RS
0000 ; #define CS_1 PORTD|=(1<<PD4)
0000 ; #define SID_0 PORTD&=~(1<<PD5) //数据 RW
0000 ; #define SID_1 PORTD|=(1<<PD5)
0000 ; #define SCLK_0 PORTD&=~(1<<PD6) //时钟 E
0000 ; #define SCLK_1 PORTD|=(1<<PD6)
0000 ; #define RST_0 PORTD&=~(1<<PD7) //复位 RST
0000 ; #define RST_1 PORTD|=(1<<PD7)
0000 ; /**********************函数声明***************************************/
0000 ; void delay_us(int t);
0000 ; void delay_ms(unsigned int t);
0000 ; void send_byte(uchar bbyte);
0000 ; void lcd_wcmd(uchar cmd);
0000 ; void lcd_wdat(uchar dat);
0000 ; //*******************延时 us 8****************************************
0000 ; void delay_us(int t)
0000 ; {
0000 L2:
0000 .dbline 23
0000 ; do
0000 ; t--;
0000 0150 subi R16,1
0002 1040 sbci R17,0
0004 L3:
0004 .dbline 24
0004 ; while(t>1);
0004 81E0 ldi R24,1
0006 90E0 ldi R25,0
0008 8017 cp R24,R16
000A 9107 cpc R25,R17
000C CCF3 brlt L2
000E X0:
000E .dbline -2
000E L1:
000E .dbline 0 ; func end
000E 0895 ret
0010 .dbsym r t 16 I
0010 .dbend
0010 .dbfunc e delay_ms _delay_ms fV
0010 ; t -> R20,R21
.even
0010 _delay_ms::
0010 4A93 st -y,R20
0012 5A93 st -y,R21
0014 A801 movw R20,R16
0016 .dbline -1
0016 .dbline 28
0016 ; }
0016 ; //*******************延时 ms *****************************************
0016 ; void delay_ms(unsigned int t)
0016 ; {
0016 05C0 rjmp L7
0018 L6:
0018 .dbline 30
0018 ; while(t!=0)
0018 ; {
0018 .dbline 31
0018 ; delay_us(1142);
0018 06E7 ldi R16,1142
001A 14E0 ldi R17,4
001C F1DF rcall _delay_us
001E .dbline 32
001E ; t--;}
001E 4150 subi R20,1
0020 5040 sbci R21,0
0022 .dbline 32
0022 L7:
0022 .dbline 29
0022 4030 cpi R20,0
0024 4507 cpc R20,R21
0026 C1F7 brne L6
0028 X1:
0028 .dbline -2
0028 L5:
0028 .dbline 0 ; func end
0028 5991 ld R21,y+
002A 4991 ld R20,y+
002C 0895 ret
002E .dbsym r t 20 i
002E .dbend
002E .dbfunc e send_byte _send_byte fV
002E ; i -> R20
002E ; bbyte -> R16
.even
002E _send_byte::
002E 4A93 st -y,R20
0030 .dbline -1
0030 .dbline 36
0030 ; }
0030 ; /*********************发送1字节函数****************************/
0030 ; void send_byte(uchar bbyte)
0030 ; {
0030 .dbline 38
0030 ; uchar i;
0030 ; for(i=0;i<8;i++)
0030 4427 clr R20
0032 09C0 rjmp L13
0034 L10:
0034 .dbline 39
0034 ; {
0034 .dbline 40
0034 ; if(bbyte&0X80)
0034 07FF sbrs R16,7
0036 02C0 rjmp L14
0038 X2:
0038 .dbline 41
0038 ; {SID_1;}
0038 .dbline 41
0038 959A sbi 0x12,5
003A .dbline 41
003A 01C0 rjmp L15
003C L14:
003C .dbline 43
003C ; else
003C ; {SID_0;}
003C .dbline 43
003C 9598 cbi 0x12,5
003E .dbline 43
003E L15:
003E .dbline 44
003E ; SCLK_1;
003E 969A sbi 0x12,6
0040 .dbline 45
0040 ; SCLK_0;
0040 9698 cbi 0x12,6
0042 .dbline 46
0042 ; bbyte<<=1;
0042 000F lsl R16
0044 .dbline 47
0044 ; }
0044 L11:
0044 .dbline 38
0044 4395 inc R20
0046 L13:
0046 .dbline 38
0046 4830 cpi R20,8
0048 A8F3 brlo L10
004A X3:
004A .dbline -2
004A L9:
004A .dbline 0 ; func end
004A 4991 ld R20,y+
004C 0895 ret
004E .dbsym r i 20 c
004E .dbsym r bbyte 16 c
004E .dbend
004E .dbfunc e lcd_wcmd _lcd_wcmd fV
004E ; Ldata -> R20
004E ; Hdata -> R22
004E ; star_data -> R10
004E ; cmd -> R20
.even
004E _lcd_wcmd::
004E 00D0 rcall push_xgsetF00C
0050 402F mov R20,R16
0052 .dbline -1
0052 .dbline 51
0052 ; }
0052 ; /************************写命令函数**********************************/
0052 ; void lcd_wcmd(uchar cmd)
0052 ; {
0052 .dbline 53
0052 ; uchar star_data,Hdata,Ldata;
0052 ; star_data=0XF8;
0052 88EF ldi R24,248
0054 A82E mov R10,R24
0056 .dbline 54
0056 ; Hdata=cmd&0XF0;
0056 642F mov R22,R20
0058 607F andi R22,240
005A .dbline 55
005A ; Ldata=(cmd<<4)&0XF0;
005A 842F mov R24,R20
005C 8F70 andi R24,#0x0F
005E 8295 swap R24
0060 807F andi R24,240
0062 482F mov R20,R24
0064 .dbline 56
0064 ; send_byte(star_data);
0064 0A2D mov R16,R10
0066 E3DF rcall _send_byte
0068 .dbline 57
0068 ; delay_us(1);
0068 01E0 ldi R16,1
006A 10E0 ldi R17,0
006C C9DF rcall _delay_us
006E .dbline 58
006E ; send_byte(Hdata);
006E 062F mov R16,R22
0070 DEDF rcall _send_byte
0072 .dbline 59
0072 ; delay_us(1);
0072 01E0 ldi R16,1
0074 10E0 ldi R17,0
0076 C4DF rcall _delay_us
0078 .dbline 60
0078 ; send_byte(Ldata);
0078 042F mov R16,R20
007A D9DF rcall _send_byte
007C .dbline 61
007C ; delay_us(1);
007C 01E0 ldi R16,1
007E 10E0 ldi R17,0
0080 BFDF rcall _delay_us
0082 .dbline -2
0082 L16:
0082 .dbline 0 ; func end
0082 00C0 rjmp pop_xgsetF00C
0084 .dbsym r Ldata 20 c
0084 .dbsym r Hdata 22 c
0084 .dbsym r star_data 10 c
0084 .dbsym r cmd 20 c
0084 .dbend
0084 .dbfunc e lcd_wdat _lcd_wdat fV
0084 ; Ldata -> R20
0084 ; Hdata -> R22
0084 ; star_data -> R10
0084 ; dat -> R20
.even
0084 _lcd_wdat::
0084 00D0 rcall push_xgsetF00C
0086 402F mov R20,R16
0088 .dbline -1
0088 .dbline 65
0088 ; }
0088 ; /**************************写数据函数***************************************/
0088 ; void lcd_wdat(uchar dat)
0088 ; {
0088 .dbline 67
0088 ; uchar star_data,Hdata,Ldata;
0088 ; star_data=0XFA;
0088 8AEF ldi R24,250
008A A82E mov R10,R24
008C .dbline 68
008C ; Hdata=dat&0XF0;
008C 642F mov R22,R20
008E 607F andi R22,240
0090 .dbline 69
0090 ; Ldata=(dat<<4)&0XF0;
0090 842F mov R24,R20
0092 8F70 andi R24,#0x0F
0094 8295 swap R24
0096 807F andi R24,240
0098 482F mov R20,R24
009A .dbline 70
009A ; send_byte(star_data);
009A 0A2D mov R16,R10
009C C8DF rcall _send_byte
009E .dbline 71
009E ; delay_us(1);
009E 01E0 ldi R16,1
00A0 10E0 ldi R17,0
00A2 AEDF rcall _delay_us
00A4 .dbline 72
00A4 ; send_byte(Hdata);
00A4 062F mov R16,R22
00A6 C3DF rcall _send_byte
00A8 .dbline 73
00A8 ; delay_us(1);
00A8 01E0 ldi R16,1
00AA 10E0 ldi R17,0
00AC A9DF rcall _delay_us
00AE .dbline 74
00AE ; send_byte(Ldata);
00AE 042F mov R16,R20
00B0 BEDF rcall _send_byte
00B2 .dbline 75
00B2 ; delay_us(1);
00B2 01E0 ldi R16,1
00B4 10E0 ldi R17,0
00B6 A4DF rcall _delay_us
00B8 .dbline -2
00B8 L17:
00B8 .dbline 0 ; func end
00B8 00C0 rjmp pop_xgsetF00C
00BA .dbsym r Ldata 20 c
00BA .dbsym r Hdata 22 c
00BA .dbsym r star_data 10 c
00BA .dbsym r dat 20 c
00BA .dbend
00BA .dbfunc e lcd_init _lcd_init fV
.even
00BA _lcd_init::
00BA .dbline -1
00BA .dbline 80
00BA ;
00BA ; }
00BA ; /**************************初始化函数*************************************/
00BA ; void lcd_init(void)
00BA ; {
00BA .dbline 82
00BA ; //PSB_0;
00BA ; RST_0;
00BA 9798 cbi 0x12,7
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -