📄 switchoutput.lis
字号:
.module SwitchOutput.c
.area text
0000 .dbfile SwitchOutput.c
0000 .dbfunc e SwitchOutput_Init _SwitchOutput_Init fV
0000 _SwitchOutput_Init::
0000 .dbline -1
0000 .dbline 18
0000 ; //[SwitchOutput.c]开关驱动-------------------------------------------------*
0000 ; //本文件包含: *
0000 ; // (1)SwitchOutput_Init:定义控制开关的MCU的I/O引脚为输出 *
0000 ; // (2)SwitchOutput:将某引脚模拟为开关的开闭 *
0000 ; //硬件连接: *
0000 ; // (1)本处的开关是接触器,由MCU的I/O引脚控制 *
0000 ; // (2)控制引脚=高电平时,模拟开关的闭状态;反之,模拟开关的开状态; *
0000 ; //-------------------------------------------------------------------------*
0000 ;
0000 ; #include"SwitchOutput.h" //该头文件中包含了开关控制引脚定义和相关函数声明
0000 ;
0000 ; //SwitchOutput_Init:定义控制开关的MCU引脚为输出----------------------------*
0000 ; //功能:定义控制开关的MCU引脚为输出,并模拟开关初始为开 *
0000 ; //参数:无 *
0000 ; //返回:无 *
0000 ; //-------------------------------------------------------------------------*
0000 ; void SwitchOutput_Init(void)
0000 ; {
0000 .dbline 19
0000 ; SwitchOutput_D=0xFF; //令开关输出端口为输出
0000 A6FF lda #-1
0002 B704 sta 0x4
0004 .dbline 20
0004 ; SwitchOutput_P=0x00; //初始输出全为低,模拟开关的开状态
0004 3F00 clr 0
0006 .dbline -2
0006 L1:
0006 .dbline 0 ; func end
0006 81 rts
0007 .dbend
0007 .dbfunc e SwitchOutput _SwitchOutput fV
0007 ; Status -> 3,X
0007 ; PinNo -> 2,X
0007 _SwitchOutput::
0007 .dbline -1
0007 95 tsx
0008 .dbline 30
0008 ; }
0008 ;
0008 ; //SwitchOutput:驱动开关"开"、"闭"------------------------------------------*
0008 ; //功能:通过给某引脚设定状态来模拟开关的开闭 *
0008 ; //参数:PinNo=需设定状态的引脚(0~7) *
0008 ; // Status=Open,开;Status=Close,闭 *
0008 ; //返回:无 *
0008 ; //-------------------------------------------------------------------------*
0008 ; void SwitchOutput(INT8U PinNo,INT8U Status)
0008 ; {
0008 .dbline 31
0008 ; if(Status==0)
0008 E603 lda 3,X
000A 2617 bne L3
000C .dbline 32
000C ; SwitchOutput_P &=~(1<<PinNo); //开关“开”
000C 6E0100 mov #1,*__r0
000F E602 lda 2,X
0011 A407 and #7
0013 2704 beq X1
0015 X0:
0015 3800 lsl *__r0
0017 4BFC dbnza X0
0019 X1:
0019 3300 com *__r0
001B B600 lda 0
001D B400 and *__r0
001F B700 sta 0
0021 2013 bra L4
0023 L3:
0023 .dbline 34
0023 6E0100 mov #1,*__r0
0026 E602 lda 2,X
0028 A407 and #7
002A 2704 beq X3
002C X2:
002C 3800 lsl *__r0
002E 4BFC dbnza X2
0030 X3:
0030 B600 lda 0
0032 BA00 ora *__r0
0034 B700 sta 0
0036 L4:
0036 .dbline -2
0036 L2:
0036 .dbline 0 ; func end
0036 81 rts
0037 .dbsym l Status 3 c
0037 .dbsym l PinNo 2 c
0037 .dbend
0037 .dbfunc e LightInit _LightInit fV
0037 _LightInit::
0037 .dbline -1
0037 .dbline 38
0037 ; else
0037 ; SwitchOutput_P |=(1<<PinNo); //开关“闭”
0037 ; }
0037 ;
0037 ; void LightInit(void)
0037 ; {
0037 .dbline 39
0037 ; BakeLight_D|=1<<LightPin; //令按钮开关输出端口为输出
0037 1A07 bset #5,0x7
0039 .dbline 40
0039 ; BakeLight_P|=1<<LightPin; //初始输出为高
0039 1A03 bset #5,0x3
003B .dbline -2
003B L5:
003B .dbline 0 ; func end
003B 81 rts
003C .dbend
003C .dbfunc e LightOut _LightOut fV
003C ; Status -> 2,X
003C _LightOut::
003C .dbline -1
003C 95 tsx
003D .dbline 44
003D ; // BakeLight_P&=~(1<<LightPin);
003D ; }
003D ; void LightOut(INT8U Status)
003D ; {
003D .dbline 45
003D ; if(Status==1)
003D E602 lda 2,X
003F A101 cmp #1
0041 2604 bne L7
0043 .dbline 46
0043 ; BakeLight_P &=~(1<<LightPin); //开关“开”
0043 1B03 bclr #5,0x3
0045 2002 bra L8
0047 L7:
0047 .dbline 48
0047 1A03 bset #5,0x3
0049 L8:
0049 .dbline -2
0049 L6:
0049 .dbline 0 ; func end
0049 81 rts
004A .dbsym l Status 2 c
004A .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -