SN 8 位单片机 SN8P2743 应用实践(4)
时间:04-01
来源:互联网
点击:
作者:bjxsdz
接 汇编测试程序:
B_COM0SS:;比较器CM0:
CLR CM0M ; 清CM0M 寄存器。; 复位比较器CM0。
;设置比较器CM0 的功能模式。
;B0BCLR FCM0SF ; 普通比较器模式。
B0BSET FCM0SF ; 特殊功能模式。
;设置比较器CM0 的输出引脚。
B0BCLR FCM0OEN ; 禁止比较器CM0 的输出引脚。 ---- 没有输出引脚
; B0BSET FCM0OEN ; 使能比较器CM0 的输出引脚。
;比较器不要外部输出引脚时,接口板上芯片插座引脚是普通I/O,比较器引脚则仍然是比较器引脚.
;比较器使用外部输出引脚时,接口板上芯片插座引脚=比较器引脚.
;仅仅 2 个引脚 ( IN+_IN- )就可以构成一个比较器!
; 设置比较器CM0 中断触发沿。
B0BCLR FCM0G ; 下降沿。由高变低(CM0P<CM0N).
; B0BSET FCM0G ; 上升沿。比较器输出状态由低变高(CM0P>CM0N).
;设置比较器CM0 输出de-bounce。
MOV A,#00H ; 通过CM0D[3:0]设置比较器CM0 输出de-bounce。
B0MOV CMDB0,A
B0BCLR FCM0IRQ; 清CM0IRQ。
;使能比较器CM0 和中断功能。
B0BSET FCM0IEN ; 使能比较器CM0 中断功能。
B0BSET FCM0EN ; 使能比较器CM0。
RET
;=============================================================
B_COM0SS_1: ;// 比较器CM1:
CLR CM1M ; 清CM1M 寄存器。; 复位比较器CM1。
; 设置比较器CM1 正极输入端。 通过CM1RS[2:0]设置比较器CM1 正极输入端。
;000=CM1P 引脚为比较器正极输入引脚,GPIO 功能被屏蔽,
; MOV A,#00000111B ; 100B=4.0V -- 读数=105709
; MOV A,#00000110B ; 100B=3.5V -- 读数=79147
; MOV A,#00000101B ; 100B=3.0V -- 读数=60305
; MOV A,#00000100B ; 100B=2.5V -- 读数=45723
; MOV A,#00000011B ; 11B=2.0V -- 读数=33659
; MOV A,#00000010B ; 10B=1.5V -- 读数=23601
MOV A,#00000001B ; 10B=1.0V -- 读数=14908
B0MOV CM1M,A ; ---- 没有输入+ 引脚
; 设置比较器CM1 功能模式。
B0BCLR FCM1SF ; 普通比较器。
;B0BSET FCM1SF ; 特殊功能。
; 设置比较器CM1 输出引脚。
B0BCLR FCM1OEN ; 禁止。 ---- 没有输出引脚
; B0BSET FCM1OEN ; 使能。
;比较器不要外部输出引脚时,接口板上芯片插座引脚是普通I/O,比较器引脚则仍然是比较器引脚.
;比较器使用外部输出引脚时,接口板上芯片插座引脚=比较器引脚.
;仅仅一个 IN- 就可以构成一个比较器!
;设置比较器CM1 中断触发沿。
B0BCLR FCM1G ; 下降沿。翻转=2.552V/2.570V
; B0BSET FCM1G ; 上升沿。翻转=2.552V/2.570V
; 设置比较器CM1 输出de-bounce。
MOV A,#00H ; 通过CM1D[3:0]设置比较器CM1 输出de-bounce。
B0MOV CMDB0,A
; 清CM1IRQ。
B0BCLR FCM1IRQ
; 使能比较器CM1 和中断功能。
B0BSET FCM1IEN ; 使能比较器CM1 中断功能。
B0BSET FCM1EN ; 使能比较器CM1。
RET
;***************************************************************
B_IRS:
H_PUSH
;比较器1 中断
BS1 FCM1IEN ; 使能比较器CM0 中断功能。
JMP B_IRST0
BS1 FCM1IRQ; 清CM0IRQ。
JMP B_IRST0
ZB0 FCM1IRQ; 中断发生时,FCM0OUT 并不对!还没有发生翻转就中断了!
BS0 FCM1OUT;IN+>IN- 则=1,否则=0!--- 输入脚加滤波电容就很好了! 0.8mV 动作!
JMP B_IRST0
Z2B0 FT0ENB,FT0IEN
ZB0 FP01
ZB0 FCM1IEN
JMP B_IRQT01
B_IRST0:
BS1 FT0IEN
JMP B_EXISR
B_IRQT01:
BS1 FT0IRQ
JMP B_EXISR
ZB0 FT0IRQ
INCMS SSSL
JMP @F
INCMS SSSM
JMP @F
INCMS SSSH
@@:
NOP
NOP
NOP
JMP B_EXISR
;------------------------------------------------------------------------
;比较器0 中断
BS1 FCM0IEN ; 使能比较器CM0 中断功能。
JMP B_EXISR
BS1 FCM0IRQ; 清CM0IRQ。
JMP B_EXISR
ZB0 FCM0IRQ; 中断发生时,FCM0OUT 并不对!还没有发生翻转就中断了!
BS0 FCM0OUT;IN+>IN- 则=1,否则=0!--- 输入脚加滤波电容就很好了! 0.8mV 动作!
JMP B_EXISR
NOP
NOP
NOP
B_EXISR:
H_POP
RETI
;*************************************************
接 汇编测试程序:
B_COM0SS:;比较器CM0:
CLR CM0M ; 清CM0M 寄存器。; 复位比较器CM0。
;设置比较器CM0 的功能模式。
;B0BCLR FCM0SF ; 普通比较器模式。
B0BSET FCM0SF ; 特殊功能模式。
;设置比较器CM0 的输出引脚。
B0BCLR FCM0OEN ; 禁止比较器CM0 的输出引脚。 ---- 没有输出引脚
; B0BSET FCM0OEN ; 使能比较器CM0 的输出引脚。
;比较器不要外部输出引脚时,接口板上芯片插座引脚是普通I/O,比较器引脚则仍然是比较器引脚.
;比较器使用外部输出引脚时,接口板上芯片插座引脚=比较器引脚.
;仅仅 2 个引脚 ( IN+_IN- )就可以构成一个比较器!
; 设置比较器CM0 中断触发沿。
B0BCLR FCM0G ; 下降沿。由高变低(CM0P<CM0N).
; B0BSET FCM0G ; 上升沿。比较器输出状态由低变高(CM0P>CM0N).
;设置比较器CM0 输出de-bounce。
MOV A,#00H ; 通过CM0D[3:0]设置比较器CM0 输出de-bounce。
B0MOV CMDB0,A
B0BCLR FCM0IRQ; 清CM0IRQ。
;使能比较器CM0 和中断功能。
B0BSET FCM0IEN ; 使能比较器CM0 中断功能。
B0BSET FCM0EN ; 使能比较器CM0。
RET
;=============================================================
B_COM0SS_1: ;// 比较器CM1:
CLR CM1M ; 清CM1M 寄存器。; 复位比较器CM1。
; 设置比较器CM1 正极输入端。 通过CM1RS[2:0]设置比较器CM1 正极输入端。
;000=CM1P 引脚为比较器正极输入引脚,GPIO 功能被屏蔽,
; MOV A,#00000111B ; 100B=4.0V -- 读数=105709
; MOV A,#00000110B ; 100B=3.5V -- 读数=79147
; MOV A,#00000101B ; 100B=3.0V -- 读数=60305
; MOV A,#00000100B ; 100B=2.5V -- 读数=45723
; MOV A,#00000011B ; 11B=2.0V -- 读数=33659
; MOV A,#00000010B ; 10B=1.5V -- 读数=23601
MOV A,#00000001B ; 10B=1.0V -- 读数=14908
B0MOV CM1M,A ; ---- 没有输入+ 引脚
; 设置比较器CM1 功能模式。
B0BCLR FCM1SF ; 普通比较器。
;B0BSET FCM1SF ; 特殊功能。
; 设置比较器CM1 输出引脚。
B0BCLR FCM1OEN ; 禁止。 ---- 没有输出引脚
; B0BSET FCM1OEN ; 使能。
;比较器不要外部输出引脚时,接口板上芯片插座引脚是普通I/O,比较器引脚则仍然是比较器引脚.
;比较器使用外部输出引脚时,接口板上芯片插座引脚=比较器引脚.
;仅仅一个 IN- 就可以构成一个比较器!
;设置比较器CM1 中断触发沿。
B0BCLR FCM1G ; 下降沿。翻转=2.552V/2.570V
; B0BSET FCM1G ; 上升沿。翻转=2.552V/2.570V
; 设置比较器CM1 输出de-bounce。
MOV A,#00H ; 通过CM1D[3:0]设置比较器CM1 输出de-bounce。
B0MOV CMDB0,A
; 清CM1IRQ。
B0BCLR FCM1IRQ
; 使能比较器CM1 和中断功能。
B0BSET FCM1IEN ; 使能比较器CM1 中断功能。
B0BSET FCM1EN ; 使能比较器CM1。
RET
;***************************************************************
B_IRS:
H_PUSH
;比较器1 中断
BS1 FCM1IEN ; 使能比较器CM0 中断功能。
JMP B_IRST0
BS1 FCM1IRQ; 清CM0IRQ。
JMP B_IRST0
ZB0 FCM1IRQ; 中断发生时,FCM0OUT 并不对!还没有发生翻转就中断了!
BS0 FCM1OUT;IN+>IN- 则=1,否则=0!--- 输入脚加滤波电容就很好了! 0.8mV 动作!
JMP B_IRST0
Z2B0 FT0ENB,FT0IEN
ZB0 FP01
ZB0 FCM1IEN
JMP B_IRQT01
B_IRST0:
BS1 FT0IEN
JMP B_EXISR
B_IRQT01:
BS1 FT0IRQ
JMP B_EXISR
ZB0 FT0IRQ
INCMS SSSL
JMP @F
INCMS SSSM
JMP @F
INCMS SSSH
@@:
NOP
NOP
NOP
JMP B_EXISR
;------------------------------------------------------------------------
;比较器0 中断
BS1 FCM0IEN ; 使能比较器CM0 中断功能。
JMP B_EXISR
BS1 FCM0IRQ; 清CM0IRQ。
JMP B_EXISR
ZB0 FCM0IRQ; 中断发生时,FCM0OUT 并不对!还没有发生翻转就中断了!
BS0 FCM0OUT;IN+>IN- 则=1,否则=0!--- 输入脚加滤波电容就很好了! 0.8mV 动作!
JMP B_EXISR
NOP
NOP
NOP
B_EXISR:
H_POP
RETI
;*************************************************
- 基于SoC的抗窄带干扰和自适应门限的基带捕获IP设计(04-08)
- MSP430系列单片机简介(06-18)
- 将信号转换为合适的逻辑电平(08-04)
- 为低功耗应用选择正确的 µC 外围器件(03-12)
- 让微控制器性能发挥极限(03-24)
- 基于PIC单片机的LED点阵手写屏设计(03-12)