📄 main.s
字号:
.module main.c
.area text(rom, con, rel)
.dbfile D:\ICCAVR~1\模块化~1\src\main.c
.dbfunc e Init_Port _Init_Port fV
.even
_Init_Port::
.dbline -1
.dbline 19
; /********************************************************************************************
; *项目名:ATMEGA128控制4×6矩阵键盘,LCD1602
; *项目描述:4×6键盘,通过按键来开启发光二极管,显示液晶1602屏幕
; *硬件条件:1.CPU:ATMEGA128
; 2.晶振:1MHz
; *作者:cheungman
; *日期:2007.11.12
; *********************************************************************************************/
; #include "common.h"
;
; /********************************************************************************************
; * 函数名称:Init_Port()
; * 功 能:I/O口初始化
; * 入口参数:无
; * 出口参数:无
; * 说 明:
; *********************************************************************************************/
; void Init_Port(void)
; {
.dbline 20
; PORTB=0xff;
ldi R24,255
out 0x18,R24
.dbline 21
; DDRB=0xff;
out 0x17,R24
.dbline 22
; PORTD=0xff;
out 0x12,R24
.dbline 23
; DDRB=0xc0;
ldi R24,192
out 0x17,R24
.dbline 24
; PORTF=0xff;
ldi R24,255
sts 98,R24
.dbline 25
; DDRF=0xff;
sts 97,R24
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e main _main fV
; table -> y+2
; temp -> R20
.even
_main::
sbiw R28,7
.dbline -1
.dbline 29
; }
;
; void main(void)
; {
.dbline 33
; unsigned char temp;
; //unsigned char *p;
; unsigned char table[5];
; Init_LCD();
xcall _Init_LCD
.dbline 34
; Init_Port();
xcall _Init_Port
.dbline 35
; LCD_DisplayString(1,1,"key scan test start");
ldi R24,<L3
ldi R25,>L3
std y+1,R25
std y+0,R24
ldi R18,1
ldi R16,1
xcall _LCD_DisplayString
.dbline 36
; delay_nms(200);
ldi R16,200
ldi R17,0
xcall _delay_nms
.dbline 37
; LCD_Clear();
xcall _LCD_Clear
xjmp L5
L4:
.dbline 39
; while(1)
; {
.dbline 40
; LCD_DisplayString(1,1,"The number of key is");
ldi R24,<L7
ldi R25,>L7
std y+1,R25
std y+0,R24
ldi R18,1
ldi R16,1
xcall _LCD_DisplayString
.dbline 41
; temp=key_scan();
xcall _key_scan
mov R20,R16
.dbline 42
; if(temp==1)
cpi R16,1
brne L8
X0:
.dbline 43
; {
.dbline 44
; LCD_Clear();
xcall _LCD_Clear
.dbline 45
; LCD_DisplayString(2,1,"zhangwen");
ldi R24,<L10
ldi R25,>L10
std y+1,R25
std y+0,R24
ldi R18,1
ldi R16,2
xcall _LCD_DisplayString
.dbline 46
; led(temp);
mov R16,R20
xcall _led
.dbline 47
; }
xjmp L9
L8:
.dbline 48
; else if(temp==2)
cpi R20,2
brne L11
X1:
.dbline 49
; {
.dbline 50
; LCD_Clear();
xcall _LCD_Clear
.dbline 51
; LCD_DisplayString(2,1,"Creator");
ldi R24,<L13
ldi R25,>L13
std y+1,R25
std y+0,R24
ldi R18,1
ldi R16,2
xcall _LCD_DisplayString
.dbline 52
; led(temp);
mov R16,R20
xcall _led
.dbline 53
; }
xjmp L12
L11:
.dbline 54
; else if(temp==3)
cpi R20,3
brne L14
X2:
.dbline 55
; {
.dbline 56
; LCD_Clear();
xcall _LCD_Clear
.dbline 57
; table[0]=temp;
std y+2,R20
.dbline 58
; table[1]=temp+1;
mov R24,R20
subi R24,255 ; addi 1
std y+3,R24
.dbline 59
; LCD_DisplayString(2,1,table);
movw R24,R28
adiw R24,2
std y+1,R25
std y+0,R24
ldi R18,1
ldi R16,2
xcall _LCD_DisplayString
.dbline 60
; }
L14:
L12:
L9:
.dbline 61
; }
L5:
.dbline 38
xjmp L4
X3:
.dbline -2
L2:
.dbline 0 ; func end
adiw R28,7
ret
.dbsym l table 2 A[5:5]c
.dbsym r temp 20 c
.dbend
.area data(ram, con, rel)
.dbfile D:\ICCAVR~1\模块化~1\src\main.c
L13:
.blkb 8
.area idata
.byte 'C,'r,'e,'a,'t,'o,'r,0
.area data(ram, con, rel)
.dbfile D:\ICCAVR~1\模块化~1\src\main.c
L10:
.blkb 9
.area idata
.byte 'z,'h,'a,'n,'g,'w,'e,'n,0
.area data(ram, con, rel)
.dbfile D:\ICCAVR~1\模块化~1\src\main.c
L7:
.blkb 21
.area idata
.byte 'T,'h,'e,32,'n,'u,'m,'b,'e,'r,32,'o,'f,32,'k,'e
.byte 'y,32,'i,'s,0
.area data(ram, con, rel)
.dbfile D:\ICCAVR~1\模块化~1\src\main.c
L3:
.blkb 20
.area idata
.byte 'k,'e,'y,32,'s,'c,'a,'n,32,'t,'e,'s,'t,32,'s,'t
.byte 'a,'r,'t,0
.area data(ram, con, rel)
.dbfile D:\ICCAVR~1\模块化~1\src\main.c
; }
;
;
;
;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -