⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.s

📁 atmega16与lcd1604的的代码
💻 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 + -