技术热线: 4007-888-234
设计开发

专注差异化嵌入式产品解决方案 给智能产品定制注入灵魂给予生命

开发工具

提供开发工具、应用测试 完善的开发代码案例库分享

技术支持

从全面的产品导入到强大技术支援服务 全程贴心伴随服务,创造无限潜能!

新品推广

提供新的芯片及解决方案,提升客户产品竞争力

新闻中心

提供最新的单片机资讯,行业消息以及公司新闻动态

键判断制作的可逆计数器

更新时间: 2019-03-23
阅读量:2049

十年专注单片机方案开发的方案公司英锐恩,分享键判断制作的可逆计数器。英锐恩现提供服务产品涉及主控芯片:8位单片机、16位单片机、32位单片机及各类运算放大器等。

这个程序的主要学习目的:学用键盘的按下与松开

 

思路:通过对ra1键盘的按下,加一,只有松开后,再按下,才能再加一,规律是0-256变化

 

       通过对ra2键盘的按下,减一,只有松开后,再按下,才能再减一,规律是256-0变化

 

      也可以直接从RA1   RA2  输入脉冲信号,实现加减计数功能,输入脉冲信号计数时要改变延时时间或者不要延时,一保证每个脉冲有效计数,不被漏掉.

 

;说明:可逆计数器,
;***********************************
  LIST  P=PIC16F876A
  #INCLUDE P16F876A.INC
;************************************

COUNT1 EQU   20H
COUNT2 EQU   21H
COUNT3 EQU   22H
COUNT4 EQU   23H
COUNT5 EQU   24H
;**********************************
  ORG   0
START BSF   STATUS,RP0
  MOVLW  B'11111111'
  MOVWF  TRISB
  MOVLW  B'00000000'
  MOVWF  TRISC
  BCF   OPTION_REG,7
  BCF   STATUS,RP0
  MOVLW  0
  MOVWF  COUNT1
  MOVWF  COUNT2
  MOVWF  COUNT3
  MOVWF  PORTC

LOOP0 BTFSS  PORTB,1
  GOTO  LOOP
  BTFSS  PORTB,2
  GOTO  LOOP1
  GOTO  LOOP0
LOOP CALL  DELAY1
  INCF  COUNT1,1
  MOVF  COUNT1,0
  MOVWF  PORTC
  CALL  DELAY
  BTFSC  PORTB,1
  GOTO  LOOP0
  GOTO  $-2
;*********************************
LOOP1 CALL  DELAY1
  DECF  COUNT1,1
  MOVF  COUNT1,0
  MOVWF  PORTC
  CALL  DELAY
  BTFSC  PORTB,2
  GOTO  LOOP0
  GOTO  $-2
DELAY MOVLW  D'30'
  MOVWF  COUNT2
LOP2 MOVLW  D'30'

 MOVWF  COUNT3
  DECFSZ  COUNT3,1
  GOTO  $-1
  DECFSZ  COUNT2,1
  GOTO  LOP2
  RETURN
DELAY1 MOVLW  D'5'
  MOVWF  COUNT4
LOP1 MOVLW  D'5'
  MOVWF  COUNT5
  DECFSZ  COUNT5,1
  GOTO  $-1
  DECFSZ  COUNT4,1
  GOTO  LOP1
  RETURN
;**********************************
  END