📄 main.s
字号:
.module main.c
.area text(rom, con, rel)
.dbfile E:\ICCAVR\project\afa-1\icc\afa-003\main.c
.dbfunc e delay_ms _delay_ms fV
; a -> R20
; b -> R22
; i -> R16
.even
_delay_ms::
xcall push_gset2
.dbline -1
.dbline 10
; /*
; 内部1 M晶振。
; 定时器实险,周期信号驱动无源蜂鸣器。
; 程序中实现单一频率的周期性提示音。
; 程序采用单任务方式,软件延时。
; */
; #include "iom16v.h"
;
; /*延时函数*/
; void delay_ms(unsigned char i) {
.dbline 13
ldi R20,1
xjmp L5
L2:
.dbline 13
;
; unsigned char a, b;
; for (a = 1; a < i; a++) {
.dbline 14
ldi R22,1
xjmp L9
L6:
.dbline 14
.dbline 15
.dbline 16
L7:
.dbline 14
inc R22
L9:
.dbline 14
tst R22
brne L6
.dbline 17
L3:
.dbline 13
inc R20
L5:
.dbline 13
cp R20,R16
brlo L2
.dbline -2
L1:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r a 20 c
.dbsym r b 22 c
.dbsym r i 16 c
.dbend
.dbfunc e main _main fV
; i -> R20
.even
_main::
.dbline -1
.dbline 20
; for (b = 1; b; b++) {
; ;
; }
; }
; }
;
; void main(void) {
.dbline 24
;
; unsigned char i;
;
; DDRA = 0x00; /*方向输入*/
clr R2
out 0x1a,R2
.dbline 25
; PORTA = 0xFF; /*打开上拉*/
ldi R24,255
out 0x1b,R24
.dbline 26
; DDRB = 0xFF; /*方向输出*/
out 0x17,R24
.dbline 27
; PORTB = 0xFF; /*高电平*/
out 0x18,R24
.dbline 28
; DDRC = 0x00;
out 0x14,R2
.dbline 29
; PORTC = 0xFF;
out 0x15,R24
.dbline 30
; DDRD = 0xFF;
out 0x11,R24
.dbline 31
; PORTD = 0xFF;
out 0x12,R24
xjmp L12
L11:
.dbline 33
;
; while (1) {
.dbline 34
clr R20
xjmp L17
L14:
.dbline 34
.dbline 35
ldi R16,1
mov R17,R20
xcall lsl8
mov R2,R16
com R2
out 0x18,R2
.dbline 36
ldi R16,100
xcall _delay_ms
.dbline 37
L15:
.dbline 34
inc R20
L17:
.dbline 34
cpi R20,8
brlo L14
.dbline 38
ldi R24,64
out 0x2f,R24
.dbline 39
ldi R24,9
out 0x2e,R24
.dbline 40
ldi R24,1000
ldi R25,3
out 0x2b,R25
out 0x2a,R24
.dbline 41
ldi R16,200
xcall _delay_ms
.dbline 42
clr R2
out 0x2f,R2
.dbline 43
cbi 0x12,5
.dbline 44
L12:
.dbline 33
xjmp L11
X0:
.dbline -2
L10:
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -