switchoutput.s
来自「项目是为日本瑞萨工作所做的BAKE炉温控系统 整个文件夹包括设计文档」· S 代码 · 共 145 行
S
145 行
.module SwitchOutput.c
.area text
.dbfile SwitchOutput.c
.dbfunc e SwitchOutput_Init _SwitchOutput_Init fV
_SwitchOutput_Init::
.dbline -1
.dbline 18
; //[SwitchOutput.c]开关驱动-------------------------------------------------*
; //本文件包含: *
; // (1)SwitchOutput_Init:定义控制开关的MCU的I/O引脚为输出 *
; // (2)SwitchOutput:将某引脚模拟为开关的开闭 *
; //硬件连接: *
; // (1)本处的开关是接触器,由MCU的I/O引脚控制 *
; // (2)控制引脚=高电平时,模拟开关的闭状态;反之,模拟开关的开状态; *
; //-------------------------------------------------------------------------*
;
; #include"SwitchOutput.h" //该头文件中包含了开关控制引脚定义和相关函数声明
;
; //SwitchOutput_Init:定义控制开关的MCU引脚为输出----------------------------*
; //功能:定义控制开关的MCU引脚为输出,并模拟开关初始为开 *
; //参数:无 *
; //返回:无 *
; //-------------------------------------------------------------------------*
; void SwitchOutput_Init(void)
; {
.dbline 19
; SwitchOutput_D=0xFF; //令开关输出端口为输出
lda #-1
sta 0x4
.dbline 20
; SwitchOutput_P=0x00; //初始输出全为低,模拟开关的开状态
clr 0
.dbline -2
L1:
.dbline 0 ; func end
rts
.dbend
.dbfunc e SwitchOutput _SwitchOutput fV
; Status -> 3,X
; PinNo -> 2,X
_SwitchOutput::
.dbline -1
tsx
.dbline 30
; }
;
; //SwitchOutput:驱动开关"开"、"闭"------------------------------------------*
; //功能:通过给某引脚设定状态来模拟开关的开闭 *
; //参数:PinNo=需设定状态的引脚(0~7) *
; // Status=Open,开;Status=Close,闭 *
; //返回:无 *
; //-------------------------------------------------------------------------*
; void SwitchOutput(INT8U PinNo,INT8U Status)
; {
.dbline 31
; if(Status==0)
lda 3,X
bne L3
.dbline 32
; SwitchOutput_P &=~(1<<PinNo); //开关“开”
mov #1,*__r0
lda 2,X
and #7
beq X1
X0:
lsl *__r0
dbnza X0
X1:
com *__r0
lda 0
and *__r0
sta 0
bra L4
L3:
.dbline 34
mov #1,*__r0
lda 2,X
and #7
beq X3
X2:
lsl *__r0
dbnza X2
X3:
lda 0
ora *__r0
sta 0
L4:
.dbline -2
L2:
.dbline 0 ; func end
rts
.dbsym l Status 3 c
.dbsym l PinNo 2 c
.dbend
.dbfunc e LightInit _LightInit fV
_LightInit::
.dbline -1
.dbline 38
; else
; SwitchOutput_P |=(1<<PinNo); //开关“闭”
; }
;
; void LightInit(void)
; {
.dbline 39
; BakeLight_D|=1<<LightPin; //令按钮开关输出端口为输出
bset #5,0x7
.dbline 40
; BakeLight_P|=1<<LightPin; //初始输出为高
bset #5,0x3
.dbline -2
L5:
.dbline 0 ; func end
rts
.dbend
.dbfunc e LightOut _LightOut fV
; Status -> 2,X
_LightOut::
.dbline -1
tsx
.dbline 44
; // BakeLight_P&=~(1<<LightPin);
; }
; void LightOut(INT8U Status)
; {
.dbline 45
; if(Status==1)
lda 2,X
cmp #1
bne L7
.dbline 46
; BakeLight_P &=~(1<<LightPin); //开关“开”
bclr #5,0x3
bra L8
L7:
.dbline 48
bset #5,0x3
L8:
.dbline -2
L6:
.dbline 0 ; func end
rts
.dbsym l Status 2 c
.dbend
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?