方波.s

来自「AVR之ATMega16」· S 代码 · 共 228 行

S
228
字号
	.module _方波.c
	.area text(rom, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\方波/delay.h
	.dbfunc e DelayUS _DelayUS fV
;           time -> R16,R17
	.even
_DelayUS::
	.dbline -1
	.dbline 9
; //外部晶振 8M
; #include <ioM16v.h>
; #include <macros.h>
; #include "delay.h"
; 
; 
; 
; 
; /*------宏定义------*/
	xjmp L3
L2:
	.dbline 11
	subi R16,1
	sbci R17,0
L3:
	.dbline 10
; #define uchar	unsigned char
	ldi R24,1
	ldi R25,0
	cp R24,R16
	cpc R25,R17
	brlo L2
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbsym r time 16 i
	.dbend
	.dbfunc e DelayMS _DelayMS fV
;              i -> R20,R21
;           time -> R16,R17
	.even
_DelayMS::
	xcall push_gset1
	.dbline -1
	.dbline 20
; #define uint	unsigned int
; 
; 
; 
; //端口初始化
; void port_init(void)
; {
;  PORTA = 0x00;//设置端口方向、数据
;  DDRA  = 0x00;
;  PORTB = 0x08;
	xjmp L7
L6:
	.dbline 23
;  DDRB  = 0x08;
;  PORTC = 0x00;
;  DDRC  = 0x00;
	.dbline 24
;  PORTD = 0x00;
	ldi R20,1
	ldi R21,0
	xjmp L12
L9:
	.dbline 25
L10:
	.dbline 24
	subi R20,255  ; offset = 1
	sbci R21,255
L12:
	.dbline 24
	cpi R20,118
	ldi R30,4
	cpc R21,R30
	brlo L9
	.dbline 26
L7:
	.dbline 22
	movw R2,R16
	subi R16,1
	sbci R17,0
	tst R2
	brne L6
	tst R3
	brne L6
X0:
	.dbline -2
L5:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbsym r time 16 i
	.dbend
	.dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\方波\方波.c
	.dbfunc e port_init _port_init fV
	.even
_port_init::
	.dbline -1
	.dbline 17
	.dbline 18
	clr R2
	out 0x1b,R2
	.dbline 19
	out 0x1a,R2
	.dbline 20
	ldi R24,8
	out 0x18,R24
	.dbline 21
	out 0x17,R24
	.dbline 22
	out 0x15,R2
	.dbline 23
	out 0x14,R2
	.dbline 24
	out 0x12,R2
	.dbline 25
;  DDRD  = 0x00;
	out 0x11,R2
	.dbline -2
L13:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e timer0_init _timer0_init fV
	.even
_timer0_init::
	.dbline -1
	.dbline 31
; }
; 
; 
; //定时器T0初始化
; void timer0_init(void)
; {
	.dbline 32
;  TCCR0  = 0x00;//停止定时器
	clr R2
	out 0x33,R2
	.dbline 33
;  TCNT0  = 0x00;//初始值
	out 0x32,R2
	.dbline 34
;  OCR0   = 0x7F;//匹配值
	ldi R24,127
	out 0x3c,R24
	.dbline 35
;  TIMSK |= 0x00;//中断允许
	in R2,0x39
	out 0x39,R2
	.dbline 36
;  TCCR0  = 0x6C;//启动定时器
	ldi R24,108
	out 0x33,R24
	.dbline -2
L14:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e init_devices _init_devices fV
	.even
_init_devices::
	.dbline -1
	.dbline 41
; }
; 
; 
; void init_devices(void)
; {
	.dbline 42
;  CLI(); //禁止所有中断
	cli
	.dbline 43
;  MCUCR  = 0x00;//INT0、INT1中断触发方式
	clr R2
	out 0x35,R2
	.dbline 44
;  MCUCSR = 0x80;//禁止JTAG
	ldi R24,128
	out 0x34,R24
	.dbline 45
;  GICR   = 0x00;//外部中断使能
	out 0x3b,R2
	.dbline 46
;  port_init();
	xcall _port_init
	.dbline 47
;  timer0_init();
	xcall _timer0_init
	.dbline 48
;  SEI();//开全局中断
	sei
	.dbline -2
L15:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e main _main fV
	.even
_main::
	.dbline -1
	.dbline 52
; }
; //主函数
; void main(void)
; {
	.dbline 53
;  init_devices();
	xcall _init_devices
	xjmp L18
L17:
	.dbline 56
	.dbline 57
	nop
	.dbline 58
L18:
	.dbline 55
	xjmp L17
X1:
	.dbline -2
L16:
	.dbline 0 ; func end
	ret
	.dbend

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?