📄 main.s
字号:
.module main.c
.area text(rom, con, rel)
.dbfile D:\各种模块设计\模块程序集\atmega16+1604仿真/KeyScay.h
.dbfunc e key_scay _key_scay fc
; key -> R20
.even
_key_scay::
xcall push_gset1
.dbline -1
.dbline 8
; //ICC-AVR application builder : 2008-4-19 16:50:18
; // Target : M16
; // Crystal: 8.0000Mhz
;
; #include <iom16v.h>
; #include <macros.h>
; #include "delay.h"
; #include "lcd.h"
.dbline 10
; #include "KeyScay.h"
;
ldi R24,240
out 0x11,R24
.dbline 11
; void port_init(void)
ldi R24,15
out 0x12,R24
.dbline 13
; {
; PORTA = 0x00;
sbis 0x10,3
rjmp L2
.dbline 14
; DDRA = 0x00;
clr R20
xjmp L3
L2:
.dbline 15
; PORTB = 0x00;
sbis 0x10,2
rjmp L4
.dbline 16
; DDRB = 0x00;
ldi R20,4
xjmp L5
L4:
.dbline 17
; PORTC = 0x00; //m103 output only
sbis 0x10,1
rjmp L6
.dbline 18
; DDRC = 0x0F;
ldi R20,8
xjmp L7
L6:
.dbline 19
; PORTD = 0x0F;
sbis 0x10,0
rjmp L8
.dbline 20
; DDRD = 0xF0;
ldi R20,12
L8:
L7:
L5:
L3:
.dbline 21
; }
ldi R24,15
out 0x11,R24
.dbline 22
;
ldi R24,240
out 0x12,R24
.dbline 23
; #pragma interrupt_handler int0_isr:2
ldi R16,20
ldi R17,0
xcall _delay_nms
.dbline 25
; void int0_isr(void)
; {
sbis 0x10,7
rjmp L10
.dbline 26
; //external interupt on INT0
xjmp L11
L10:
.dbline 27
; }
sbis 0x10,6
rjmp L12
.dbline 28
;
inc R20
xjmp L13
L12:
.dbline 29
; //call this routine to initialize all peripherals
sbis 0x10,5
rjmp L14
.dbline 30
; void init_devices(void)
subi R20,254 ; addi 2
xjmp L15
L14:
.dbline 31
; {
sbis 0x10,4
rjmp L16
.dbline 32
; //stop errant interrupts until set up
subi R20,253 ; addi 3
L16:
L15:
L13:
L11:
.dbline 33
; CLI(); //disable all interrupts
ldi R24,240
out 0x11,R24
.dbline 34
; port_init();
ldi R24,15
out 0x12,R24
.dbline 35
;
mov R16,R20
.dbline -2
L1:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r key 20 c
.dbend
.dbfile D:\各种模块设计\模块程序集\atmega16+1604仿真\main.c
.dbfunc e port_init _port_init fV
.even
_port_init::
.dbline -1
.dbline 12
.dbline 13
clr R2
out 0x1b,R2
.dbline 14
out 0x1a,R2
.dbline 15
out 0x18,R2
.dbline 16
out 0x17,R2
.dbline 17
out 0x15,R2
.dbline 18
ldi R24,15
out 0x14,R24
.dbline 19
out 0x12,R24
.dbline 20
ldi R24,240
out 0x11,R24
.dbline -2
L18:
.dbline 0 ; func end
ret
.dbend
.area vector(rom, abs)
.org 4
jmp _int0_isr
.area text(rom, con, rel)
.dbfile D:\各种模块设计\模块程序集\atmega16+1604仿真\main.c
.dbfunc e int0_isr _int0_isr fV
.even
_int0_isr::
.dbline -1
.dbline 25
.dbline -2
L19:
.dbline 0 ; func end
reti
.dbend
.dbfunc e init_devices _init_devices fV
.even
_init_devices::
.dbline -1
.dbline 31
.dbline 33
cli
.dbline 34
xcall _port_init
.dbline 36
; MCUCR = 0x00;
clr R2
out 0x35,R2
.dbline 37
; GICR = 0x40;
ldi R24,64
out 0x3b,R24
.dbline 38
; TIMSK = 0x00; //timer interrupt sources
out 0x39,R2
.dbline 39
; SEI(); //re-enable interrupts
sei
.dbline -2
L20:
.dbline 0 ; func end
ret
.dbend
.dbfunc e main _main fV
; key_vale -> R20
.even
_main::
sbiw R28,2
.dbline -1
.dbline 45
; //all peripherals are now initialized
; }
;
; void main(void)
;
; {
.dbline 48
; unsigned char key_vale;
;
; init_devices();
xcall _init_devices
.dbline 50
;
; LCD16xx_init();
xcall _LCD16xx_init
.dbline 51
; LCD16xx_clr(); //显示清屏
xcall _LCD16xx_clr
.dbline 52
; delay_nms(100);
ldi R16,100
ldi R17,0
xcall _delay_nms
.dbline 53
; LCD16xx_write_string(3,0,"Welcome to");
ldi R24,<L22
ldi R25,>L22
std y+1,R25
std y+0,R24
clr R18
ldi R16,3
xcall _LCD16xx_write_string
.dbline 54
; LCD16xx_write_string(1,1,"SEE MY work");
ldi R24,<L23
ldi R25,>L23
std y+1,R25
std y+0,R24
ldi R18,1
ldi R16,1
xcall _LCD16xx_write_string
.dbline 55
; LCD16xx_write_string(4,2,"By kang");
ldi R24,<L24
ldi R25,>L24
std y+1,R25
std y+0,R24
ldi R18,2
ldi R16,4
xcall _LCD16xx_write_string
.dbline 56
; LCD16xx_write_string(3,3,"2006.04.11");
ldi R24,<L25
ldi R25,>L25
std y+1,R25
std y+0,R24
ldi R18,3
ldi R16,3
xcall _LCD16xx_write_string
.dbline 57
; delay_nms(1000);
ldi R16,1000
ldi R17,3
xcall _delay_nms
.dbline 58
; LCD16xx_clr(); //显示清屏
xcall _LCD16xx_clr
.dbline 59
; delay_nms(500);
ldi R16,500
ldi R17,1
xcall _delay_nms
xjmp L27
L26:
.dbline 62
.dbline 63
xcall _key_scay
mov R20,R16
.dbline 65
mov R2,R20
clr R3
std y+1,R3
std y+0,R2
clr R18
clr R19
ldi R16,3
ldi R17,0
xcall _LCD16xx_display_char
.dbline 66
L27:
.dbline 60
xjmp L26
X0:
.dbline -2
L21:
adiw R28,2
.dbline 0 ; func end
ret
.dbsym r key_vale 20 c
.dbend
.area data(ram, con, rel)
.dbfile D:\各种模块设计\模块程序集\atmega16+1604仿真\main.c
L25:
.blkb 11
.area idata
.byte 50,48,48,54,46,48,52,46,49,49,0
.area data(ram, con, rel)
.dbfile D:\各种模块设计\模块程序集\atmega16+1604仿真\main.c
L24:
.blkb 8
.area idata
.byte 'B,'y,32,'k,'a,'n,'g,0
.area data(ram, con, rel)
.dbfile D:\各种模块设计\模块程序集\atmega16+1604仿真\main.c
L23:
.blkb 12
.area idata
.byte 'S,'E,'E,32,'M,'Y,32,'w,'o,'r,'k,0
.area data(ram, con, rel)
.dbfile D:\各种模块设计\模块程序集\atmega16+1604仿真\main.c
L22:
.blkb 11
.area idata
.byte 'W,'e,'l,'c,'o,'m,'e,32,'t,'o,0
.area data(ram, con, rel)
.dbfile D:\各种模块设计\模块程序集\atmega16+1604仿真\main.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -