📄 main.s
字号:
.module main.c
.area text(rom, con, rel)
.dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\LED跑马灯实验\main.c
.dbfunc e Delay_us _Delay_us fV
; time -> R16,R17
.even
_Delay_us::
.dbline -1
.dbline 43
; /****************************************Copyright (c)**************************************************
; ** ADEmbed Development Co.,LTD.
; ** http://www.adembed.com
; **--------------File Info-------------------------------------------------------------------------------
; ** File name: main.c
; ** Last modified Date: 2008-12-13
; ** Last Version: 1.0
; ** Descriptions: LED Test.
; **
; **------------------------------------------------------------------------------------------------------
; ** Created by: junbolu
; ** Created date: 2008-12-13
; ** Version: 1.0
; ** Descriptions:
; **
; **------------------------------------------------------------------------------------------------------
; ** Modified by:
; ** Modified date:
; ** Version:
; ** Descriptions:
; **
; **------------------------------------------------------------------------------------------------------
; **ICC-AVR application builder : 2008-12-13
; **Target : M16
; **Crystal: 7.3728Mhz
; **PA0~PA7口接8位LED指示灯的使能端(低电平使能)
; **
; **描述:8位LED指示灯点亮,并且让他们循环闪烁。
; ** 学习单片机的简单程序,如果你才学习单片机,一定要好好掌握。
; **
; **涉及知识点:
; ** DO输出
; ** for 循环的应用
; ** 软件延时函数的编写
; *******************************************************************************************************/
;
; #include<iom16v.h>
; #include<macros.h>
;
; unsigned char DISP_NUM; //电亮的位数,一共8位
;
; void Delay_us(unsigned int time)
; {
L2:
.dbline 44
L3:
.dbline 44
; while(time--);
movw R2,R16
subi R16,1
sbci R17,0
tst R2
brne L2
tst R3
brne L2
X0:
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbsym r time 16 i
.dbend
.dbfunc e Delay_ms _Delay_ms fV
; time -> R20,R21
.even
_Delay_ms::
xcall push_gset1
movw R20,R16
.dbline -1
.dbline 48
; }
;
; void Delay_ms(unsigned int time)
; {
xjmp L7
L6:
.dbline 50
.dbline 51
ldi R16,1000
ldi R17,3
xcall _Delay_us
.dbline 52
L7:
.dbline 49
; while(time--)
movw R2,R20
subi R20,1
sbci R21,0
tst R2
brne L6
tst R3
brne L6
X1:
.dbline -2
L5:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r time 20 i
.dbend
.dbfunc e main _main fV
.even
_main::
.dbline -1
.dbline 56
; {
; Delay_us(1000);
; }
; }
;
; void main(void)
; {
.dbline 58
; //初始化端口
; DDRA=0XFF; //设置PA端口为输出
ldi R24,255
out 0x1a,R24
.dbline 59
; PORTA=0XFF; //设置PA端口为高电平
out 0x1b,R24
.dbline 62
;
; //开始演示
; for(;;)
L10:
.dbline 63
; {
.dbline 64
; PORTA=0X00; //全部点亮
clr R2
out 0x1b,R2
.dbline 65
; Delay_ms(200); //延时0.2s
ldi R16,200
ldi R17,0
xcall _Delay_ms
.dbline 66
; PORTA=0XFF; //全部熄灭
ldi R24,255
out 0x1b,R24
.dbline 67
; Delay_ms(200); //延时0.2s
ldi R16,200
ldi R17,0
xcall _Delay_ms
.dbline 68
; PORTA=0X00; //全部点亮
clr R2
out 0x1b,R2
.dbline 69
; Delay_ms(200); //延时0.2s
ldi R16,200
ldi R17,0
xcall _Delay_ms
.dbline 70
; PORTA=0XFF; //全部熄灭
ldi R24,255
out 0x1b,R24
.dbline 71
; Delay_ms(1000); //延时1s
ldi R16,1000
ldi R17,3
xcall _Delay_ms
.dbline 73
;
; for(DISP_NUM=0;DISP_NUM<8;DISP_NUM++) //循环熄灭
clr R2
sts _DISP_NUM,R2
xjmp L17
L14:
.dbline 74
.dbline 75
lds R17,_DISP_NUM
ldi R16,1
xcall lsl8
mov R2,R16
com R2
out 0x1b,R2
.dbline 76
ldi R16,200
ldi R17,0
xcall _Delay_ms
.dbline 77
L15:
.dbline 73
lds R24,_DISP_NUM
subi R24,255 ; addi 1
sts _DISP_NUM,R24
L17:
.dbline 73
lds R24,_DISP_NUM
cpi R24,8
brlo L14
.dbline 78
.dbline 62
.dbline 62
xjmp L10
X2:
.dbline -2
L9:
.dbline 0 ; func end
ret
.dbend
.area bss(ram, con, rel)
.dbfile E:\MYWORK~1\开发设计\EasyAVR\程序范例\Mega16程序包\完成整理\LED跑马灯实验\main.c
_DISP_NUM::
.blkb 1
.dbsym e DISP_NUM _DISP_NUM c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -