📄 main.s
字号:
.module main.c
.area text(rom, con, rel)
.dbfile C:\DOCUME~1\yue01\桌面\LCD12864显示模块\LCD12864显示模块\main.c
.dbfunc e io_init _io_init fV
.even
_io_init::
.dbline -1
.dbline 19
; /*
; 实验十八:
; LCD12864液晶屏显示实验。
; 1、LCD12864显示实验。显示AVR开发网及网址信息。
; 2、内部1 M晶振,程序采用单任务方式,软件延时。
; 3、进行此实验需要接上外置LCD12864液晶显示屏。
; 4、RW1用于调节显示屏的对比度。
;
; AVR mega128学习板
; www.iccavr.com 阿发
; 16:22 2007-10-18
; */
;
; #include <iom128v.h>
; #include "font.h"
; #include "lcd12864.h"
;
; /*IO口初始化函数*/
; void io_init(void) {
.dbline 21
;
; DDRA = 0xFF; /*方向输出*/
ldi R24,255
out 0x1a,R24
.dbline 22
; PORTA = 0xFF; /*高电平*/
out 0x1b,R24
.dbline 23
; DDRB = 0x00; /*方向输入*/
clr R2
out 0x17,R2
.dbline 24
; PORTB = 0xFF; /*打开上拉*/
out 0x18,R24
.dbline 25
; DDRC = 0xFF; /*不用的IO口建议设置为输入带上拉*/
out 0x14,R24
.dbline 26
; PORTC = 0x00;
out 0x15,R2
.dbline 27
; DDRD = 0x00;
out 0x11,R2
.dbline 28
; PORTD = 0xFF;
out 0x12,R24
.dbline 29
; DDRE = 0x00;
out 0x2,R2
.dbline 30
; PORTE = 0xFF;
out 0x3,R24
.dbline 31
; DDRF = 0x00;
ldi R30,97
ldi R31,0
std z+0,R2
.dbline 32
; PORTF = 0xFF;
ldi R30,98
std z+0,R24
.dbline 33
; DDRG = 0x00;
ldi R30,100
std z+0,R2
.dbline 34
; PORTG = 0xFF;
ldi R30,101
std z+0,R24
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e get_ad _get_ad fi
; i -> R16,R17
.even
_get_ad::
.dbline -1
.dbline 36
; }
; unsigned int get_ad(void) {
.dbline 41
;
; unsigned int i;
;
;
; ADMUX = (1 << REFS0); /*基准AVCC、通道0*/
ldi R24,64
out 0x7,R24
.dbline 42
; ADCSRA = (1 << ADEN) | (1 << ADSC) /*使能、开启*/
ldi R24,195
out 0x6,R24
L3:
.dbline 44
L4:
.dbline 44
; | (1 << ADPS1) | (1 << ADPS0); /*8分频*/
; while(!(ADCSRA & (1 << ADIF))); /*等待采样结束*/
sbis 0x6,4
rjmp L3
.dbline 46
;
; i = ADC; /*读取AD结果*/
in R16,0x4
in R17,0x5
.dbline 47
; ADCSRA &= ~(1 << ADIF); /*清标志*/
cbi 0x6,4
.dbline 48
; ADCSRA &= ~(1 << ADEN); /*关闭转换*/
cbi 0x6,7
.dbline 50
;
; return i; /*返回结果*/
.dbline -2
L2:
.dbline 0 ; func end
ret
.dbsym r i 16 i
.dbend
.dbfunc e main _main fV
; t -> R20,R21
.even
_main::
sbiw R28,2
.dbline -1
.dbline 52
; }
; void main(void) {
.dbline 54
; int t;
; io_init(); /*IO口初始化*/
xcall _io_init
.dbline 55
; disp_init(); /*LCD初始化*/
xcall _disp_init
.dbline 56
; disp_clear(0, 128, 0); /*清除四行显示*/
clr R2
std y+0,R2
ldi R18,128
clr R16
xcall _disp_clear
.dbline 57
; disp_clear(0, 128, 2);
ldi R24,2
std y+0,R24
ldi R18,128
clr R16
xcall _disp_clear
.dbline 58
; disp_clear(0, 128, 4);
ldi R24,4
std y+0,R24
ldi R18,128
clr R16
xcall _disp_clear
.dbline 59
; disp_clear(0, 128, 6);
ldi R24,6
std y+0,R24
ldi R18,128
clr R16
xcall _disp_clear
.dbline 62
;
;
; disp_myself(0,0,124);
ldi R24,124
std y+0,R24
clr R18
clr R16
xcall _disp_myself
.dbline 63
; disp_myself(0,1,124);
ldi R24,124
std y+0,R24
ldi R18,1
clr R16
xcall _disp_myself
.dbline 64
; disp_myself(0,2,124);
ldi R24,124
std y+0,R24
ldi R18,2
clr R16
xcall _disp_myself
.dbline 65
; disp_myself(0,3,124);
ldi R24,124
std y+0,R24
ldi R18,3
clr R16
xcall _disp_myself
.dbline 66
; disp_myself(0,4,124);
ldi R24,124
std y+0,R24
ldi R18,4
clr R16
xcall _disp_myself
.dbline 67
; disp_myself(0,5,124);
ldi R24,124
std y+0,R24
ldi R18,5
clr R16
xcall _disp_myself
.dbline 68
; disp_myself(0,6,124);
ldi R24,124
std y+0,R24
ldi R18,6
clr R16
xcall _disp_myself
.dbline 69
; disp_myself(0,7,124);
ldi R24,124
std y+0,R24
ldi R18,7
clr R16
xcall _disp_myself
.dbline 70
; disp_myself(8,0,124);
ldi R24,124
std y+0,R24
clr R18
ldi R16,8
xcall _disp_myself
.dbline 71
; disp_myself(8,1,124);
ldi R24,124
std y+0,R24
ldi R18,1
ldi R16,8
xcall _disp_myself
.dbline 72
; disp_myself(8,2,124);
ldi R24,124
std y+0,R24
ldi R18,2
ldi R16,8
xcall _disp_myself
.dbline 73
; disp_myself(8,3,124);
ldi R24,124
std y+0,R24
ldi R18,3
ldi R16,8
xcall _disp_myself
.dbline 74
; disp_myself(8,4,124);
ldi R24,124
std y+0,R24
ldi R18,4
ldi R16,8
xcall _disp_myself
.dbline 75
; disp_myself(8,5,124);
ldi R24,124
std y+0,R24
ldi R18,5
ldi R16,8
xcall _disp_myself
.dbline 76
; disp_myself(8,6,124);
ldi R24,124
std y+0,R24
ldi R18,6
ldi R16,8
xcall _disp_myself
.dbline 77
; disp_myself(8,7,124);
ldi R24,124
std y+0,R24
ldi R18,7
ldi R16,8
xcall _disp_myself
.dbline 78
; disp_myself(112,0,124);
ldi R24,124
std y+0,R24
clr R18
ldi R16,112
xcall _disp_myself
.dbline 79
; disp_myself(112,1,124);
ldi R24,124
std y+0,R24
ldi R18,1
ldi R16,112
xcall _disp_myself
.dbline 80
; disp_myself(112,2,124);
ldi R24,124
std y+0,R24
ldi R18,2
ldi R16,112
xcall _disp_myself
.dbline 81
; disp_myself(112,3,124);
ldi R24,124
std y+0,R24
ldi R18,3
ldi R16,112
xcall _disp_myself
.dbline 82
; disp_myself(112,4,124);
ldi R24,124
std y+0,R24
ldi R18,4
ldi R16,112
xcall _disp_myself
.dbline 83
; disp_myself(112,5,124);
ldi R24,124
std y+0,R24
ldi R18,5
ldi R16,112
xcall _disp_myself
.dbline 84
; disp_myself(112,6,124);
ldi R24,124
std y+0,R24
ldi R18,6
ldi R16,112
xcall _disp_myself
.dbline 85
; disp_myself(112,7,124);
ldi R24,124
std y+0,R24
ldi R18,7
ldi R16,112
xcall _disp_myself
.dbline 86
; disp_myself(120,0,124);
ldi R24,124
std y+0,R24
clr R18
ldi R16,120
xcall _disp_myself
.dbline 87
; disp_myself(120,1,124);
ldi R24,124
std y+0,R24
ldi R18,1
ldi R16,120
xcall _disp_myself
.dbline 88
; disp_myself(120,2,124);
ldi R24,124
std y+0,R24
ldi R18,2
ldi R16,120
xcall _disp_myself
.dbline 89
; disp_myself(120,3,124);
ldi R24,124
std y+0,R24
ldi R18,3
ldi R16,120
xcall _disp_myself
.dbline 90
; disp_myself(120,4,124);
ldi R24,124
std y+0,R24
ldi R18,4
ldi R16,120
xcall _disp_myself
.dbline 91
; disp_myself(120,5,124);
ldi R24,124
std y+0,R24
ldi R18,5
ldi R16,120
xcall _disp_myself
.dbline 92
; disp_myself(120,6,124);
ldi R24,124
std y+0,R24
ldi R18,6
ldi R16,120
xcall _disp_myself
.dbline 93
; disp_myself(120,7,124);
ldi R24,124
std y+0,R24
ldi R18,7
ldi R16,120
xcall _disp_myself
.dbline 94
; disp_myself(0,5,123);
ldi R24,123
std y+0,R24
ldi R18,5
clr R16
xcall _disp_myself
.dbline 96
;
; t=get_ad();
xcall _get_ad
movw R20,R16
.dbline 97
; disp_to_bcd(t);
xcall _disp_to_bcd
.dbline 101
;
;
;
; disp_char_str(58, 0, "m"); /*显示网址信息*/
ldi R24,<L7
ldi R25,>L7
std y+1,R25
std y+0,R24
clr R18
ldi R16,58
xcall _disp_char_str
L8:
.dbline 102
L9:
.dbline 102
xjmp L8
X0:
.dbline -2
L6:
adiw R28,2
.dbline 0 ; func end
ret
.dbsym r t 20 I
.dbend
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\yue01\桌面\LCD12864显示模块\LCD12864显示模块\main.c
L7:
.blkb 2
.area idata
.byte 'm,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\yue01\桌面\LCD12864显示模块\LCD12864显示模块\main.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -