📄 led.s
字号:
.module LED.c
.area text
.dbfile LED.c
.dbfunc e LEDinit _LEDinit fV
_LEDinit::
.dbline -1
.dbline 18
; //[LED.c]小灯驱动----------------------------------------------------------*
; //本文件包含: *
; // (1)LEDinit:小灯控制引脚初始化 *
; // (2)LED_L_A:小灯"亮/暗"控制 *
; //硬件连接: *
; // (1)本处的小灯是一个发光二极管,由MCU的I/O引脚控制 *
; // (2)控制引脚=高电平时,小灯"亮";反之,小灯"暗" *
; //-------------------------------------------------------------------------*
;
; #include "LED.h" //该头文件中包含了小灯控制引脚定义和相关函数声明
;
; //LEDinit:定义控制小灯的MCU引脚为输出--------------------------------------*
; //功能:定义控制小灯的MCU引脚为输出,并使小灯初始为暗 *
; //参数:无 *
; //返回:无 *
; //-------------------------------------------------------------------------*
; void LEDinit(void)
; {
.dbline 19
; Light_D |= 1 << Light_Pin; //令小灯引脚为输出
bset #1,0x9
.dbline 20
; Light_P &= ~(1 << Light_Pin); //初始时,小灯"暗"
bclr #1,0x8
.dbline -2
L1:
.dbline 0 ; func end
rts
.dbend
.dbfunc e LED_L_A _LED_L_A fV
; flag -> 2,X
_LED_L_A::
.dbline -1
tsx
.dbline 29
; }
;
; //LED_L_A:驱动小灯"亮","暗"------------------------------------------------*
; //功能:根据flag的值控制小灯的亮和暗 *
; //参数:flag(flag = 'A',小灯暗;flag = 'L',小灯亮) *
; //返回:无 *
; //-------------------------------------------------------------------------*
; void LED_L_A(INT8U flag)
; {
.dbline 30
; if (flag == 'L')
lda 2,X
cmp #76
bne L3
.dbline 31
; {
.dbline 32
; Light_P |= 1 << Light_Pin; //小灯"暗"
bset #1,0x8
.dbline 33
; }
bra L4
L3:
.dbline 35
;
; else if (flag == 'A')
lda 2,X
cmp #65
bne L5
.dbline 36
; {
.dbline 37
; Light_P &= ~(1 << Light_Pin); //小灯"亮"
bclr #1,0x8
.dbline 38
; }
L5:
L4:
.dbline -2
L2:
.dbline 0 ; func end
rts
.dbsym l flag 2 c
.dbend
.dbfunc e LED_Spark _LED_Spark fV
; i -> 0,X
; interval -> 1,X
; type -> 6,X
; num -> 5,X
_LED_Spark::
.dbline -1
ais #-3
tsx
.dbline 47
; }
;
; //LED_Spark:驱动小灯闪烁---------------------------------------------------*
; //功能:驱动小灯闪烁 *
; //参数:num - 闪烁次数(小于256),type - 闪烁方式(L:长间隔,S:短间隔) *
; //返回:无 *
; //-------------------------------------------------------------------------*
; void LED_Spark(INT8U num, INT8U type)
; {
.dbline 52
; INT8U i;
; INT16U interval;
;
; //设置时间间隔
; interval = 0;
clr 2,X
clr 1,X
.dbline 53
; if(type == 'L')
lda 6,X
cmp #76
bne L8
.dbline 54
; {
.dbline 55
; interval = 15000;
lda #58
sta 1,X
lda #-104
sta 2,X
.dbline 56
; }
bra L9
L8:
.dbline 57
; else if(type == 'S')
lda 6,X
cmp #83
bne L10
.dbline 58
; {
.dbline 59
; interval = 1500;
lda #5
sta 1,X
lda #-36
sta 2,X
.dbline 60
; }
L10:
L9:
.dbline 63
;
; //闪烁小灯
; for(i = 0; i < num; i++)
clr ,X
bra L15
L12:
.dbline 64
.dbline 65
lda #76
psha
jsr _LED_L_A
ais #1
tsx
.dbline 66
lda 2,X
psha
lda 1,X
psha
jsr _Delay
ais #2
.dbline 67
lda #65
psha
jsr _LED_L_A
ais #1
tsx
.dbline 68
lda 2,X
psha
lda 1,X
psha
jsr _Delay
ais #2
tsx
.dbline 69
L13:
.dbline 63
inc ,X
L15:
.dbline 63
lda ,X
cmp 5,X
blo L12
.dbline -2
L7:
ais #3
.dbline 0 ; func end
rts
.dbsym l i 0 c
.dbsym l interval 1 i
.dbsym l type 6 c
.dbsym l num 5 c
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -