方波.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 + -
显示快捷键?