📄 st7920iccavrmega8.lis
字号:
0062 ; }
0062 ; return ((0xf0&temp1)+(0x0f&temp2));
0062 802F mov R24,R16
0064 8F70 andi R24,15
0066 022F mov R16,R18
0068 007F andi R16,240
006A 080F add R16,R24
006C .dbline -2
006C L8:
006C 00D0 rcall pop_gset1
006E .dbline 0 ; func end
006E 0895 ret
0070 .dbsym r temp2 16 c
0070 .dbsym r temp1 18 c
0070 .dbsym r i 20 c
0070 .dbend
0070 .dbfunc e CheckBusy _CheckBusy fV
.even
0070 _CheckBusy::
0070 .dbline -1
0070 .dbline 79
0070 ; }
0070 ; //液晶忙检查CheckBusy
0070 ; void CheckBusy( void )
0070 ; {
0070 L22:
0070 .dbline 80
0070 ; do SendByte(0xfc); //11111,RW(1),RS(0),0
0070 0CEF ldi R16,252
0072 C6DF rcall _SendByte
0074 L23:
0074 .dbline 81
0074 ; while(0x80&ReceiveByte());
0074 D5DF rcall _ReceiveByte
0076 07FD sbrc R16,7
0078 FBCF rjmp L22
007A .dbline -2
007A L21:
007A .dbline 0 ; func end
007A 0895 ret
007C .dbend
007C .dbfunc e WriteCommand _WriteCommand fV
007C ; Cbyte -> R20
.even
007C _WriteCommand::
007C 00D0 rcall push_gset1
007E 402F mov R20,R16
0080 .dbline -1
0080 .dbline 85
0080 ; }
0080 ; //========写命令========
0080 ; void WriteCommand( unsigned char Cbyte )
0080 ; {
0080 .dbline 86
0080 ; CheckBusy();
0080 F7DF rcall _CheckBusy
0082 .dbline 87
0082 ; SendByte(0xf8); //11111,RW(0),RS(0),0
0082 08EF ldi R16,248
0084 BDDF rcall _SendByte
0086 .dbline 88
0086 ; SendByte(0xf0&Cbyte);
0086 042F mov R16,R20
0088 007F andi R16,240
008A BADF rcall _SendByte
008C .dbline 89
008C ; SendByte(0xf0&Cbyte<<4);
008C 042F mov R16,R20
008E 0F70 andi R16,#0x0F
0090 0295 swap R16
0092 007F andi R16,240
0094 B5DF rcall _SendByte
0096 .dbline -2
0096 L25:
0096 00D0 rcall pop_gset1
0098 .dbline 0 ; func end
0098 0895 ret
009A .dbsym r Cbyte 20 c
009A .dbend
009A .dbfunc e WriteData _WriteData fV
009A ; Dbyte -> R20
.even
009A _WriteData::
009A 00D0 rcall push_gset1
009C 402F mov R20,R16
009E .dbline -1
009E .dbline 93
009E ; }
009E ; //========写数据========
009E ; void WriteData( unsigned char Dbyte )
009E ; {
009E .dbline 94
009E ; CheckBusy();
009E E8DF rcall _CheckBusy
00A0 .dbline 95
00A0 ; SendByte(0xfa); //11111,RW(0),RS(1),0
00A0 0AEF ldi R16,250
00A2 AEDF rcall _SendByte
00A4 .dbline 96
00A4 ; SendByte(0xf0&Dbyte);
00A4 042F mov R16,R20
00A6 007F andi R16,240
00A8 ABDF rcall _SendByte
00AA .dbline 97
00AA ; SendByte(0xf0&Dbyte<<4);
00AA 042F mov R16,R20
00AC 0F70 andi R16,#0x0F
00AE 0295 swap R16
00B0 007F andi R16,240
00B2 A6DF rcall _SendByte
00B4 .dbline -2
00B4 L26:
00B4 00D0 rcall pop_gset1
00B6 .dbline 0 ; func end
00B6 0895 ret
00B8 .dbsym r Dbyte 20 c
00B8 .dbend
00B8 .dbfunc e ReadData _ReadData fc
.even
00B8 _ReadData::
00B8 .dbline -1
00B8 .dbline 101
00B8 ; }
00B8 ; //========读数据========
00B8 ; unsigned char ReadData( void )
00B8 ; {
00B8 .dbline 102
00B8 ; CheckBusy();
00B8 DBDF rcall _CheckBusy
00BA .dbline 103
00BA ; SendByte(0xfe); //11111,RW(1),RS(1),0
00BA 0EEF ldi R16,254
00BC A1DF rcall _SendByte
00BE .dbline 104
00BE ; return ReceiveByte();
00BE B0DF rcall _ReceiveByte
00C0 .dbline -2
00C0 L27:
00C0 .dbline 0 ; func end
00C0 0895 ret
00C2 .dbend
00C2 .dbfunc e Delay _Delay fV
00C2 ; usn -> R20
00C2 ; us -> R22
00C2 ; MS -> R16,R17
.even
00C2 _Delay::
00C2 00D0 rcall push_gset2
00C4 .dbline -1
00C4 .dbline 108
00C4 ; }
00C4 ; //===延时程序 ,12M/ms==
00C4 ; void Delay(unsigned int MS)
00C4 ; {
00C4 0CC0 rjmp L30
00C6 L29:
00C6 .dbline 111
00C6 ; unsigned char us,usn;
00C6 ; while(MS!=0) //for 12M
00C6 ; {
00C6 .dbline 112
00C6 ; usn = 2;
00C6 42E0 ldi R20,2
00C8 06C0 rjmp L33
00CA L32:
00CA .dbline 114
00CA ; while(usn!=0)
00CA ; {
00CA .dbline 115
00CA ; us=0xf5;
00CA 65EF ldi R22,245
00CC 01C0 rjmp L36
00CE L35:
00CE .dbline 116
00CE .dbline 116
00CE 6A95 dec R22
00D0 .dbline 116
00D0 L36:
00D0 .dbline 116
00D0 6623 tst R22
00D2 E9F7 brne L35
00D4 .dbline 116
00D4 .dbline 117
00D4 4A95 dec R20
00D6 .dbline 118
00D6 L33:
00D6 .dbline 113
00D6 4423 tst R20
00D8 C1F7 brne L32
00DA .dbline 119
00DA 0150 subi R16,1
00DC 1040 sbci R17,0
00DE .dbline 120
00DE L30:
00DE .dbline 110
00DE 0030 cpi R16,0
00E0 0107 cpc R16,R17
00E2 89F7 brne L29
00E4 X0:
00E4 .dbline -2
00E4 L28:
00E4 00D0 rcall pop_gset2
00E6 .dbline 0 ; func end
00E6 0895 ret
00E8 .dbsym r usn 20 c
00E8 .dbsym r us 22 c
00E8 .dbsym r MS 16 i
00E8 .dbend
00E8 .dbfunc e LcmInit _LcmInit fV
.even
00E8 _LcmInit::
00E8 .dbline -1
00E8 .dbline 124
00E8 ; while (us!=0){us--;};
00E8 ; usn--;
00E8 ; }
00E8 ; MS--;
00E8 ; }
00E8 ; }
00E8 ; //=====液晶初始化======
00E8 ; void LcmInit( void )
00E8 ; {
00E8 .dbline 125
00E8 ; WriteCommand(0x30); //基本指令,选择8位CPU控制方式,关图显
00E8 00E3 ldi R16,48
00EA C8DF rcall _WriteCommand
00EC .dbline 126
00EC ; WriteCommand(0x03); //复位地址计数器
00EC 03E0 ldi R16,3
00EE C6DF rcall _WriteCommand
00F0 .dbline 127
00F0 ; WriteCommand(0x0C); //开整体显示
00F0 0CE0 ldi R16,12
00F2 C4DF rcall _WriteCommand
00F4 .dbline 128
00F4 ; WriteCommand(0x01); //清除屏显的数据
00F4 01E0 ldi R16,1
00F6 C2DF rcall _WriteCommand
00F8 .dbline 129
00F8 ; WriteCommand(0x06); //设置地址计数器递增
00F8 06E0 ldi R16,6
00FA C0DF rcall _WriteCommand
00FC .dbline -2
00FC L38:
00FC .dbline 0 ; func end
00FC 0895 ret
00FE .dbend
00FE .dbfunc e LcmClearTXT _LcmClearTXT fV
.even
00FE _LcmClearTXT::
00FE .dbline -1
00FE .dbline 133
00FE ; }
00FE ; //=======清文字========
00FE ; void LcmClearTXT( void )
00FE ; {
00FE .dbline 134
00FE ; LcmInit();
00FE F4DF rcall _LcmInit
0100 .dbline -2
0100 L39:
0100 .dbline 0 ; func end
0100 0895 ret
0102 .dbend
0102 .dbfunc e LcmClearBMP _LcmClearBMP fV
0102 ; i -> R20
0102 ; j -> R22
.even
0102 _LcmClearBMP::
0102 00D0 rcall push_gset2
0104 .dbline -1
0104 .dbline 138
0104 ; }
0104 ; //=======清图片========
0104 ; void LcmClearBMP( void )
0104 ; {
0104 .dbline 140
0104 ; unsigned char i,j;
0104 ; WriteCommand(0x34); //关图显
0104 04E3 ldi R16,52
0106 BADF rcall _WriteCommand
0108 .dbline 141
0108 ; for(i=0;i<32;i++)
0108 4427 clr R20
010A 0DC0 rjmp L44
010C L41:
010C .dbline 142
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -