SN 8 位单片机 SN8P2743 应用实践(4)
发布时间:2012-4-1 10:13
发布者:李宽
作者: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 ;************************************************* |
网友评论