📄 st7920iccavrmega8.lis
字号:
.module st7920iccavrmega8.c
.area data(ram, con, rel)
0000 _AC_TABLE::
0000 .blkb 2
.area idata
0000 8081 .byte 128,129
.area data(ram, con, rel)
0002 .blkb 2
.area idata
0002 8283 .byte 130,131
.area data(ram, con, rel)
0004 .blkb 2
.area idata
0004 8485 .byte 132,133
.area data(ram, con, rel)
0006 .blkb 2
.area idata
0006 8687 .byte 134,135
.area data(ram, con, rel)
0008 .blkb 2
.area idata
0008 9091 .byte 144,145
.area data(ram, con, rel)
000A .blkb 2
.area idata
000A 9293 .byte 146,147
.area data(ram, con, rel)
000C .blkb 2
.area idata
000C 9495 .byte 148,149
.area data(ram, con, rel)
000E .blkb 2
.area idata
000E 9697 .byte 150,151
.area data(ram, con, rel)
0010 .blkb 2
.area idata
0010 8889 .byte 136,137
.area data(ram, con, rel)
0012 .blkb 2
.area idata
0012 8A8B .byte 138,139
.area data(ram, con, rel)
0014 .blkb 2
.area idata
0014 8C8D .byte 140,141
.area data(ram, con, rel)
0016 .blkb 2
.area idata
0016 8E8F .byte 142,143
.area data(ram, con, rel)
0018 .blkb 2
.area idata
0018 9899 .byte 152,153
.area data(ram, con, rel)
001A .blkb 2
.area idata
001A 9A9B .byte 154,155
.area data(ram, con, rel)
001C .blkb 2
.area idata
001C 9C9D .byte 156,157
.area data(ram, con, rel)
001E .blkb 2
.area idata
001E 9E9F .byte 158,159
.area data(ram, con, rel)
0020 .dbfile E:\AVR学习专区\AVR学习板\st7920iccavrmega8.c
0020 .dbsym e AC_TABLE _AC_TABLE A[32:32]c
0020 _str2::
0020 .blkb 17
.area idata
0020 BBB6D3ADB9E2C1D94156524C43442121 .byte 187,182,211,173,185,226,193,217,'A,'V,'R,'L,'C,'D,33,33
0030 00 .byte 0
.area data(ram, con, rel)
0031 .dbfile E:\AVR学习专区\AVR学习板\st7920iccavrmega8.c
0031 .dbsym e str2 _str2 A[17:17]c
0031 _str1::
0031 .blkb 65
.area idata
0031 D4C6C4B8C6C1B7E7D6F2D3B0C9EEA3AC .byte 212,198,196,184,198,193,183,231,214,242,211,176,201,238,163,172
0041 B3A4BAD3BDA5C2E4CFFED0C7B3C1A1A3 .byte 179,164,186,211,189,165,194,228,207,254,208,199,179,193,161,163
0051 E6CFB6F0D3A6BBDACDB5C1E9D2A9A3AC .byte 230,207,182,240,211,166,187,218,205,181,193,233,210,169,163,172
0061 B1CCBAA3C7E0CCECD2B9D2B9D0C4A1A3 .byte 177,204,186,163,199,224,204,236,210,185,210,185,208,196,161,163
0071 00 .byte 0
.area data(ram, con, rel)
0072 .dbfile E:\AVR学习专区\AVR学习板\st7920iccavrmega8.c
0072 .dbsym e str1 _str1 A[65:65]c
.area text(rom, con, rel)
0000 .dbfile E:\AVR学习专区\AVR学习板\st7920iccavrmega8.c
0000 .dbfunc e SendByte _SendByte fV
0000 ; i -> R20
0000 ; Dbyte -> R16
.even
0000 _SendByte::
0000 00D0 rcall push_gset1
0002 .dbline -1
0002 .dbline 41
0002 ; /****************************************************************************************
0002 ; LCM(DM12864M-带字库,ST7920控制芯片)mega8控制显示程序
0002 ;
0002 ; 程序功能:该程序是用AVR来控制对DM12864M
0002 ; 读写信号等的操作.
0002 ; 硬件连接:采用串行方式显示,分配PB6=SID,PB7=SCK,PB1=LCD_ON
0002 ; 三个I/O口分别作为LCM数据,时钟信号,背光开关
0002 ; 的控制。
0002 ; CS和/RESET直接接VCC;PSB直接接GND
0002 ; 作者:张国旗
0002 ; 2008年12月29号
0002 ; ****************************************************************************************/
0002 ; #include <iom8v.h>
0002 ; #include <macros.h>
0002 ; #include <stdio.h>
0002 ;
0002 ; #define LCDDDR DDRB
0002 ; #define LCDDDR_IN LCDDDR&=~BIT(PB6);
0002 ; #define LCDDDR_OUT LCDDDR|=BIT(PB1)|BIT(PB6)|BIT(PB7);
0002 ; /*===============================================================*/
0002 ; #define LCDCTL PORTB
0002 ; #define SID_ON LCDCTL |= BIT(PB6) //数据
0002 ; #define SID_OFF LCDCTL &= ~BIT(PB6)
0002 ; #define SCK_ON LCDCTL |= BIT(PB7) //时钟
0002 ; #define SCK_OFF LCDCTL &= ~BIT(PB7)
0002 ; #define LCD_ON LCDCTL |= BIT(PB1) //开启背光
0002 ; #define LCD_OFF LCDCTL &= ~BIT(PB1)
0002 ; //#define uchar unsigned char
0002 ; /***********************函数体部分*********************************/
0002 ; unsigned char AC_TABLE[]={
0002 ; 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,
0002 ; 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,
0002 ; 0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,
0002 ; 0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,
0002 ; };
0002 ; unsigned char str2[]="欢迎光临AVRLCD!!";
0002 ; unsigned char str1[]="云母屏风烛影深,长河渐落晓星沉。嫦娥应悔偷灵药,碧海青天夜夜心。";
0002 ; unsigned char bmp1[];//先声明一下就可以把表放在函数后面啦,呵呵
0002 ; //=========发送一个字节程序=========
0002 ; void SendByte(unsigned char Dbyte)
0002 ; {
0002 .dbline 43
0002 ; unsigned char i;
0002 ; for(i=0;i<8;i++)
0002 4427 clr R20
0004 09C0 rjmp L5
0006 L2:
0006 .dbline 44
0006 ; {
0006 .dbline 45
0006 ; if(Dbyte&0x80)SID_ON;
0006 07FF sbrs R16,7
0008 02C0 rjmp L6
000A .dbline 45
000A C69A sbi 0x18,6
000C 01C0 rjmp L7
000E L6:
000E .dbline 46
000E ; else SID_OFF;
000E C698 cbi 0x18,6
0010 L7:
0010 .dbline 47
0010 C79A sbi 0x18,7
0012 .dbline 48
0012 C798 cbi 0x18,7
0014 .dbline 49
0014 000F lsl R16
0016 .dbline 50
0016 L3:
0016 .dbline 43
0016 4395 inc R20
0018 L5:
0018 .dbline 43
0018 4830 cpi R20,8
001A A8F3 brlo L2
001C .dbline -2
001C L1:
001C 00D0 rcall pop_gset1
001E .dbline 0 ; func end
001E 0895 ret
0020 .dbsym r i 20 c
0020 .dbsym r Dbyte 16 c
0020 .dbend
0020 .dbfunc e ReceiveByte _ReceiveByte fc
0020 ; temp2 -> R16
0020 ; temp1 -> R18
0020 ; i -> R20
.even
0020 _ReceiveByte::
0020 00D0 rcall push_gset1
0022 .dbline -1
0022 .dbline 54
0022 ; SCK_ON;
0022 ; SCK_OFF;
0022 ; Dbyte=Dbyte<<1;
0022 ; }
0022 ; }
0022 ; //接收一个字节程序((0xf0&temp1)+(0x0f&temp2))
0022 ; unsigned char ReceiveByte(void)
0022 ; {
0022 .dbline 56
0022 ; unsigned char i,temp1,temp2;
0022 ; temp1=temp2=0;
0022 0027 clr R16
0024 2227 clr R18
0026 .dbline 57
0026 ; for(i=0;i<8;i++)
0026 4427 clr R20
0028 0BC0 rjmp L12
002A L9:
002A .dbline 58
002A ; {
002A .dbline 59
002A ; LCDDDR_IN;
002A BE98 cbi 0x17,6
002C .dbline 59
002C .dbline 60
002C ; temp1=temp1<<1;
002C 220F lsl R18
002E .dbline 61
002E ; if ((PINB&0x40)!=0)temp1++; //与端口设置有关,主要修改端口时修改此位
002E B69B sbis 0x16,6
0030 01C0 rjmp L13
0032 .dbline 61
0032 2395 inc R18
0034 L13:
0034 .dbline 62
0034 87B3 in R24,0x17
0036 826C ori R24,194
0038 87BB out 0x17,R24
003A .dbline 62
003A .dbline 63
003A C79A sbi 0x18,7
003C .dbline 64
003C C798 cbi 0x18,7
003E .dbline 65
003E L10:
003E .dbline 57
003E 4395 inc R20
0040 L12:
0040 .dbline 57
0040 4830 cpi R20,8
0042 98F3 brlo L9
0044 .dbline 66
0044 ; LCDDDR_OUT;
0044 ; SCK_ON;
0044 ; SCK_OFF;
0044 ; }
0044 ; for(i=0;i<8;i++)
0044 4427 clr R20
0046 0BC0 rjmp L18
0048 L15:
0048 .dbline 67
0048 ; {
0048 .dbline 68
0048 ; LCDDDR_IN;
0048 BE98 cbi 0x17,6
004A .dbline 68
004A .dbline 69
004A ; temp2=temp2<<1;
004A 000F lsl R16
004C .dbline 70
004C ; if ((PINB&0x40)!=0)temp2++; //与端口设置有关,主要修改端口时修改此位
004C B69B sbis 0x16,6
004E 01C0 rjmp L19
0050 .dbline 70
0050 0395 inc R16
0052 L19:
0052 .dbline 71
0052 87B3 in R24,0x17
0054 826C ori R24,194
0056 87BB out 0x17,R24
0058 .dbline 71
0058 .dbline 72
0058 C79A sbi 0x18,7
005A .dbline 73
005A C798 cbi 0x18,7
005C .dbline 74
005C L16:
005C .dbline 66
005C 4395 inc R20
005E L18:
005E .dbline 66
005E 4830 cpi R20,8
0060 98F3 brlo L15
0062 .dbline 75
0062 ; LCDDDR_OUT;
0062 ; SCK_ON;
0062 ; SCK_OFF;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -