📄 main.lis
字号:
.module main.c
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\yue01\桌面\LCD12864显示模块\LCD12864显示模块\main.c
0000 .dbfunc e io_init _io_init fV
.even
0000 _io_init::
0000 .dbline -1
0000 .dbline 19
0000 ; /*
0000 ; 实验十八:
0000 ; LCD12864液晶屏显示实验。
0000 ; 1、LCD12864显示实验。显示AVR开发网及网址信息。
0000 ; 2、内部1 M晶振,程序采用单任务方式,软件延时。
0000 ; 3、进行此实验需要接上外置LCD12864液晶显示屏。
0000 ; 4、RW1用于调节显示屏的对比度。
0000 ;
0000 ; AVR mega128学习板
0000 ; www.iccavr.com 阿发
0000 ; 16:22 2007-10-18
0000 ; */
0000 ;
0000 ; #include <iom128v.h>
0000 ; #include "font.h"
0000 ; #include "lcd12864.h"
0000 ;
0000 ; /*IO口初始化函数*/
0000 ; void io_init(void) {
0000 .dbline 21
0000 ;
0000 ; DDRA = 0xFF; /*方向输出*/
0000 8FEF ldi R24,255
0002 8ABB out 0x1a,R24
0004 .dbline 22
0004 ; PORTA = 0xFF; /*高电平*/
0004 8BBB out 0x1b,R24
0006 .dbline 23
0006 ; DDRB = 0x00; /*方向输入*/
0006 2224 clr R2
0008 27BA out 0x17,R2
000A .dbline 24
000A ; PORTB = 0xFF; /*打开上拉*/
000A 88BB out 0x18,R24
000C .dbline 25
000C ; DDRC = 0xFF; /*不用的IO口建议设置为输入带上拉*/
000C 84BB out 0x14,R24
000E .dbline 26
000E ; PORTC = 0x00;
000E 25BA out 0x15,R2
0010 .dbline 27
0010 ; DDRD = 0x00;
0010 21BA out 0x11,R2
0012 .dbline 28
0012 ; PORTD = 0xFF;
0012 82BB out 0x12,R24
0014 .dbline 29
0014 ; DDRE = 0x00;
0014 22B8 out 0x2,R2
0016 .dbline 30
0016 ; PORTE = 0xFF;
0016 83B9 out 0x3,R24
0018 .dbline 31
0018 ; DDRF = 0x00;
0018 E1E6 ldi R30,97
001A F0E0 ldi R31,0
001C 2082 std z+0,R2
001E .dbline 32
001E ; PORTF = 0xFF;
001E E2E6 ldi R30,98
0020 8083 std z+0,R24
0022 .dbline 33
0022 ; DDRG = 0x00;
0022 E4E6 ldi R30,100
0024 2082 std z+0,R2
0026 .dbline 34
0026 ; PORTG = 0xFF;
0026 E5E6 ldi R30,101
0028 8083 std z+0,R24
002A .dbline -2
002A L1:
002A .dbline 0 ; func end
002A 0895 ret
002C .dbend
002C .dbfunc e get_ad _get_ad fi
002C ; i -> R16,R17
.even
002C _get_ad::
002C .dbline -1
002C .dbline 36
002C ; }
002C ; unsigned int get_ad(void) {
002C .dbline 41
002C ;
002C ; unsigned int i;
002C ;
002C ;
002C ; ADMUX = (1 << REFS0); /*基准AVCC、通道0*/
002C 80E4 ldi R24,64
002E 87B9 out 0x7,R24
0030 .dbline 42
0030 ; ADCSRA = (1 << ADEN) | (1 << ADSC) /*使能、开启*/
0030 83EC ldi R24,195
0032 86B9 out 0x6,R24
0034 L3:
0034 .dbline 44
0034 L4:
0034 .dbline 44
0034 ; | (1 << ADPS1) | (1 << ADPS0); /*8分频*/
0034 ; while(!(ADCSRA & (1 << ADIF))); /*等待采样结束*/
0034 349B sbis 0x6,4
0036 FECF rjmp L3
0038 .dbline 46
0038 ;
0038 ; i = ADC; /*读取AD结果*/
0038 04B1 in R16,0x4
003A 15B1 in R17,0x5
003C .dbline 47
003C ; ADCSRA &= ~(1 << ADIF); /*清标志*/
003C 3498 cbi 0x6,4
003E .dbline 48
003E ; ADCSRA &= ~(1 << ADEN); /*关闭转换*/
003E 3798 cbi 0x6,7
0040 .dbline 50
0040 ;
0040 ; return i; /*返回结果*/
0040 .dbline -2
0040 L2:
0040 .dbline 0 ; func end
0040 0895 ret
0042 .dbsym r i 16 i
0042 .dbend
0042 .dbfunc e main _main fV
0042 ; t -> R20,R21
.even
0042 _main::
0042 2297 sbiw R28,2
0044 .dbline -1
0044 .dbline 52
0044 ; }
0044 ; void main(void) {
0044 .dbline 54
0044 ; int t;
0044 ; io_init(); /*IO口初始化*/
0044 DDDF xcall _io_init
0046 .dbline 55
0046 ; disp_init(); /*LCD初始化*/
0046 0E940000 xcall _disp_init
004A .dbline 56
004A ; disp_clear(0, 128, 0); /*清除四行显示*/
004A 2224 clr R2
004C 2882 std y+0,R2
004E 20E8 ldi R18,128
0050 0027 clr R16
0052 0E940000 xcall _disp_clear
0056 .dbline 57
0056 ; disp_clear(0, 128, 2);
0056 82E0 ldi R24,2
0058 8883 std y+0,R24
005A 20E8 ldi R18,128
005C 0027 clr R16
005E 0E940000 xcall _disp_clear
0062 .dbline 58
0062 ; disp_clear(0, 128, 4);
0062 84E0 ldi R24,4
0064 8883 std y+0,R24
0066 20E8 ldi R18,128
0068 0027 clr R16
006A 0E940000 xcall _disp_clear
006E .dbline 59
006E ; disp_clear(0, 128, 6);
006E 86E0 ldi R24,6
0070 8883 std y+0,R24
0072 20E8 ldi R18,128
0074 0027 clr R16
0076 0E940000 xcall _disp_clear
007A .dbline 62
007A ;
007A ;
007A ; disp_myself(0,0,124);
007A 8CE7 ldi R24,124
007C 8883 std y+0,R24
007E 2227 clr R18
0080 0027 clr R16
0082 0E940000 xcall _disp_myself
0086 .dbline 63
0086 ; disp_myself(0,1,124);
0086 8CE7 ldi R24,124
0088 8883 std y+0,R24
008A 21E0 ldi R18,1
008C 0027 clr R16
008E 0E940000 xcall _disp_myself
0092 .dbline 64
0092 ; disp_myself(0,2,124);
0092 8CE7 ldi R24,124
0094 8883 std y+0,R24
0096 22E0 ldi R18,2
0098 0027 clr R16
009A 0E940000 xcall _disp_myself
009E .dbline 65
009E ; disp_myself(0,3,124);
009E 8CE7 ldi R24,124
00A0 8883 std y+0,R24
00A2 23E0 ldi R18,3
00A4 0027 clr R16
00A6 0E940000 xcall _disp_myself
00AA .dbline 66
00AA ; disp_myself(0,4,124);
00AA 8CE7 ldi R24,124
00AC 8883 std y+0,R24
00AE 24E0 ldi R18,4
00B0 0027 clr R16
00B2 0E940000 xcall _disp_myself
00B6 .dbline 67
00B6 ; disp_myself(0,5,124);
00B6 8CE7 ldi R24,124
00B8 8883 std y+0,R24
00BA 25E0 ldi R18,5
00BC 0027 clr R16
00BE 0E940000 xcall _disp_myself
00C2 .dbline 68
00C2 ; disp_myself(0,6,124);
00C2 8CE7 ldi R24,124
00C4 8883 std y+0,R24
00C6 26E0 ldi R18,6
00C8 0027 clr R16
00CA 0E940000 xcall _disp_myself
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -