📄 12864.lis
字号:
.module _12864.C
.area text(rom, con, rel)
0000 .dbfile F:\BBIBBI/delay.h
0000 .dbfunc e delay_nms _delay_nms fV
0000 ; i -> R20,R21
0000 ; n -> R22,R23
.even
0000 _delay_nms::
0000 0E940000 xcall push_gset2
0004 B801 movw R22,R16
0006 .dbline -1
0006 .dbline 2
0006 ;
0006 ; //*****************利用LCD液晶显示图形和文字******************//
0006 .dbline 3
0006 ; #include <iom16v.h>
0006 4427 clr R20
0008 5527 clr R21
000A .dbline 4
000A ; #include <macros.h>
000A 03C0 xjmp L5
000C L2:
000C .dbline 5
000C 24D0 xcall _delay_1ms
000E L3:
000E .dbline 4
000E 4F5F subi R20,255 ; offset = 1
0010 5F4F sbci R21,255
0012 L5:
0012 .dbline 4
0012 4617 cp R20,R22
0014 5707 cpc R21,R23
0016 D0F3 brlo L2
0018 .dbline -2
0018 L1:
0018 0E940000 xcall pop_gset2
001C .dbline 0 ; func end
001C 0895 ret
001E .dbsym r i 20 i
001E .dbsym r n 22 i
001E .dbend
001E .dbfunc e delay _delay fV
001E ; i -> R20
001E ; n -> R16
.even
001E _delay::
001E 0E940000 xcall push_gset1
0022 .dbline -1
0022 .dbline 8
0022 ; #include "delay.h"
0022 ; #define LCD12864 TRUE
0022 ; //************数据端口为PA1,时钟端口为PA3********************//
0022 ;
0022 .dbline 10
0022 ; #define LCD_DATAL PORTA&=~BIT(1)
0022 ; #define LCD_DATAH PORTA|=BIT(1)
0022 4427 clr R20
0024 02C0 xjmp L10
0026 L7:
0026 .dbline 11
0026 .dbline 11
0026 0000 nop
0028 .dbline 11
0028 L8:
0028 .dbline 10
0028 4395 inc R20
002A L10:
002A .dbline 10
002A 4017 cp R20,R16
002C E0F3 brlo L7
002E .dbline -2
002E L6:
002E 0E940000 xcall pop_gset1
0032 .dbline 0 ; func end
0032 0895 ret
0034 .dbsym r i 20 c
0034 .dbsym r n 16 c
0034 .dbend
0034 .dbfunc e delay_1us _delay_1us fV
.even
0034 _delay_1us::
0034 .dbline -1
0034 .dbline 14
0034 ; #define LCD_CLKL PORTA&=~BIT(3)
0034 ; #define LCD_CLKH PORTA|=BIT(3)
0034 ;
0034 ; /*******************************************************/
0034 .dbline 15
0034 ; /****** 函数名称: lcd_out ******/
0034 0000 nop
0036 .dbline -2
0036 L11:
0036 .dbline 0 ; func end
0036 0895 ret
0038 .dbend
0038 .dbfunc e delay_nus _delay_nus fV
0038 ; i -> R20,R21
0038 ; n -> R22,R23
.even
0038 _delay_nus::
0038 0E940000 xcall push_gset2
003C B801 movw R22,R16
003E .dbline -1
003E .dbline 18
003E ; /****** 功 能: 将每一位送入到LCD中 ******/
003E ; /****** 参 数: 无 ******/
003E ; /****** 返回值 : 无 ******/
003E .dbline 19
003E ; /*******************************************************/
003E 4427 clr R20
0040 5527 clr R21
0042 .dbline 20
0042 ; void lcd_out(unsigned char send_byte)
0042 03C0 xjmp L16
0044 L13:
0044 .dbline 21
0044 F7DF xcall _delay_1us
0046 L14:
0046 .dbline 20
0046 4F5F subi R20,255 ; offset = 1
0048 5F4F sbci R21,255
004A L16:
004A .dbline 20
004A 4617 cp R20,R22
004C 5707 cpc R21,R23
004E D0F3 brlo L13
0050 .dbline -2
0050 L12:
0050 0E940000 xcall pop_gset2
0054 .dbline 0 ; func end
0054 0895 ret
0056 .dbsym r i 20 i
0056 .dbsym r n 22 i
0056 .dbend
0056 .dbfunc e delay_1ms _delay_1ms fV
0056 ; i -> R16,R17
.even
0056 _delay_1ms::
0056 .dbline -1
0056 .dbline 24
0056 ; {
0056 ; unsigned char i,s;
0056 ; for (i=0;i<8;i++)
0056 ; {
0056 .dbline 26
0056 0027 clr R16
0058 1127 clr R17
005A 02C0 xjmp L21
005C L18:
005C .dbline 26
005C L19:
005C .dbline 26
005C 0F5F subi R16,255 ; offset = 1
005E 1F4F sbci R17,255
0060 L21:
0060 .dbline 26
0060 ; if((send_byte&0x80)==0)
0060 ; {
0060 0437 cpi R16,116
0062 E4E0 ldi R30,4
0064 1E07 cpc R17,R30
0066 D0F3 brlo L18
0068 .dbline -2
0068 L17:
0068 .dbline 0 ; func end
0068 0895 ret
006A .dbsym r i 16 i
006A .dbend
006A .dbfile F:\BBIBBI\12864.C
006A .dbfunc e lcd_out _lcd_out fV
006A ; s -> <dead>
006A ; i -> R20
006A ; send_byte -> R22
.even
006A _lcd_out::
006A 0E940000 xcall push_gset2
006E 602F mov R22,R16
0070 .dbline -1
0070 .dbline 21
0070 .dbline 23
0070 4427 clr R20
0072 09C0 xjmp L26
0074 L23:
0074 .dbline 24
0074 .dbline 25
0074 67FD sbrc R22,7
0076 02C0 rjmp L27
0078 .dbline 26
0078 .dbline 27
0078 ; LCD_DATAL;
0078 D998 cbi 0x1b,1
007A .dbline 28
007A ; }
007A 01C0 xjmp L28
007C L27:
007C .dbline 30
007C ; else
007C ; {
007C .dbline 31
007C ; LCD_DATAH;
007C D99A sbi 0x1b,1
007E .dbline 32
007E ; } //送数据
007E L28:
007E .dbline 33
007E DB98 cbi 0x1b,3
0080 .dbline 34
0080 DB9A sbi 0x1b,3
0082 .dbline 35
0082 660F lsl R22
0084 .dbline 36
0084 L24:
0084 .dbline 23
0084 4395 inc R20
0086 L26:
0086 .dbline 23
0086 4830 cpi R20,8
0088 A8F3 brlo L23
008A .dbline 37
008A ; LCD_CLKL;
008A ; LCD_CLKH;
008A ; send_byte=send_byte<<1;
008A ; }
008A ; delay(256);
008A 00E0 ldi R16,0
008C C8DF xcall _delay
008E .dbline -2
008E L22:
008E 0E940000 xcall pop_gset2
0092 .dbline 0 ; func end
0092 0895 ret
0094 .dbsym l s 1 c
0094 .dbsym r i 20 c
0094 .dbsym r send_byte 22 c
0094 .dbend
0094 .dbfunc e WR_dat _WR_dat fV
0094 ; s -> R20
0094 ; dat -> R22
.even
0094 _WR_dat::
0094 0E940000 xcall push_gset2
0098 602F mov R22,R16
009A .dbline -1
009A .dbline 47
009A ; }
009A ; /*******************************************************/
009A ; /****** 函数名称: WR_dat ******/
009A ; /****** 功 能: 将数据写入LCD ******/
009A ; /****** 参 数: 无 ******/
009A ; /****** 返回值 : 无 ******/
009A ; /*******************************************************/
009A ;
009A ; void WR_dat(unsigned char dat)
009A ; {
009A .dbline 49
009A ; unsigned char s;
009A ; s=dat&0xf0;
009A 462F mov R20,R22
009C 407F andi R20,240
009E .dbline 50
009E ; lcd_out(0xfa);
009E 0AEF ldi R16,250
00A0 E4DF xcall _lcd_out
00A2 .dbline 51
00A2 ; lcd_out(s);
00A2 042F mov R16,R20
00A4 E2DF xcall _lcd_out
00A6 .dbline 52
00A6 ; s=dat&0x0f;
00A6 462F mov R20,R22
00A8 4F70 andi R20,15
00AA .dbline 53
00AA ; s<<=4;
00AA 842F mov R24,R20
00AC 8F70 andi R24,#0x0F
00AE 8295 swap R24
00B0 482F mov R20,R24
00B2 .dbline 54
00B2 ; lcd_out(s);
00B2 082F mov R16,R24
00B4 DADF xcall _lcd_out
00B6 .dbline -2
00B6 L29:
00B6 0E940000 xcall pop_gset2
00BA .dbline 0 ; func end
00BA 0895 ret
00BC .dbsym r s 20 c
00BC .dbsym r dat 22 c
00BC .dbend
00BC .dbfunc e WR_control _WR_control fV
00BC ; s -> R20
00BC ; dat -> R22
.even
00BC _WR_control::
00BC 0E940000 xcall push_gset2
00C0 602F mov R22,R16
00C2 .dbline -1
00C2 .dbline 63
00C2 ; }
00C2 ; /*******************************************************/
00C2 ; /****** 函数名称: WR_control ******/
00C2 ; /****** 功 能: 将指令写入LCD ******/
00C2 ; /****** 参 数: 无 ******/
00C2 ; /****** 返回值 : 无 ******/
00C2 ; /*******************************************************/
00C2 ; void WR_control(unsigned char dat)
00C2 ; {
00C2 .dbline 65
00C2 ; unsigned char s;
00C2 ; s=dat&0xf0;
00C2 462F mov R20,R22
00C4 407F andi R20,240
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -