您当前的位置:五五电子网电子知识单片机-工控设备PIC单片机pic16f627键盘显示+E2PROM存取+模拟I2C总线通信等模块示例程序 正文
pic16f627键盘显示+E2PROM存取+模拟I2C总线通信等模块示例程序

pic16f627键盘显示+E2PROM存取+模拟I2C总线通信等模块示例程序

点击数:7923 次   录入时间:03-04 11:52:16   整理:http://www.55dianzi.com   PIC单片机
  BSF PIE1,TMR1IE ;开定时器1中断
   BCF STATUS,RP0 ;BANK0   
  MOVLW 0D8H  ;TIM1 中断周期 10 ms
  MOVWF TMR1H  ;
  MOVLW 0EFH
  MOVWF TMR1L
  CLRF T1CON
  BSF T1CON,TMR1ON ;定时器1启动
   GOTO MAIN
 
   
MAIN:    NOP
  NOP
  CLRWDT
  NOP
  NOP
  ;GOTO MAIN
  ;CALL DELAY  ;延时10毫秒
  NOP
  NOP
         NOP
  NOP
  BTFSC BIT_SG,KEY_U
  CALL KEY_INC
  NOP
  NOP
  NOP
  NOP
  BTFSC BIT_SG,KEY_D
  CALL KEY_DEC
  NOP  
  NOP
  NOP
  NOP
  BTFSC BIT_SG,KEY_DOK
  GOTO KEY_DEC_OK
  NOP
  NOP
  NOP
  NOP
  BTFSC BIT_SG,KEY_UOK
  GOTO KEY_INC_OK
  NOP
  NOP
  NOP
  NOP
  GOTO MAIN


KEY_DEC_OK: NOP
  CALL KEY_DEC  ;确认有 DOWN 键按下并放开
  NOP
  BCF BIT_SG,KEY_DOK
   GOTO CH_NEW

KEY_INC_OK: NOP
  CALL KEY_INC  ;确认有 UP 键按下并放开
  NOP
  BCF BIT_SG,KEY_UOK  
CH_NEW:  CLRF SG_S1
  CLRF SG_S2
  NOP
  CALL LED_HL  ;显示新频道
  NOP
  NOP
  CALL CXA  ;设定新频道
  NOP
  NOP
  MOVF CH_X,W
  MOVWF VALU
  MOVLW 01H
  MOVWF ADDR
  NOP
  CALL EEPROM_W ;保存新频道
  NOP
  NOP
  GOTO MAIN

KEY_INC: MOVF CH_X,W  
  MOVWF WW
  MOVLW 0CH  ;
  SUBWF WW,W
  BTFSC STATUS,Z
  GOTO CH21  ;CH_X = CH12  加 1 转 CH_21
  MOVLW 45H  ;
  SUBWF WW,W
  BTFSC STATUS,Z
  GOTO CH21  ;CH5  ;CH_X = CH69  加 1 转 CH_5
  INCF CH_X,F  ;其它正常加 1
  GOTO INC_RET
CH21:  MOVLW 15H
  MOVWF CH_X
  GOTO INC_RET
CH5:  MOVLW 05H
  MOVWF CH_X
  NOP
INC_RET: NOP
  CALL LED_HL
  BCF BIT_SG,KEY_U
  RETURN

KEY_DEC: NOP
  MOVF CH_X,W  ;确认有 DOWN 键按下
  MOVWF WW
  MOVLW 05H
  SUBWF WW,W
  BTFSC STATUS,Z
  GOTO CH69  ;CH_X = CH5  减 1 转 CH_68
  MOVLW 15H
  SUBWF WW,W
  BTFSC STATUS,Z
  GOTO CH69  ;CH12  ;CH_X = CH21  减 1 转 CH_12
  DECF CH_X,F  ;其它正常减 1
  GOTO DEC_RET
CH69:  MOVLW  45H  ;CH_69
   MOVWF CH_X
   GOTO DEC_RET
CH12:  MOVLW  0CH  ;CH_12
   MOVWF CH_X
   NOP
DEC_RET:  CALL LED_HL
  BCF BIT_SG,KEY_D  
  NOP
  RETURN

 

;//////////////////////////////////////////////////////////////////////// 
T0_INT: 
  MOVWF W_TEMP
  SWAPF STATUS,W
  MOVWF STATUS_TEMP
  MOVF WW,W
  MOVWF WW_TEMP
  BCF STATUS,RP0
  BCF PIR1,TMR1IF
  
  MOVLW 0D8H  ;TIM1 中断周期 10 ms
  MOVWF TMR1H  ;
  MOVLW 0EFH
  MOVWF TMR1L
  CLRWDT 
    
  MOVF TIM_CUNT1,W ;计数器TIM_CUNT1
  BTFSC STATUS,Z
  GOTO INT00
  DECF TIM_CUNT1,F
INT00:  NOP
  NOP
  MOVF TIM_CUNT2,W ;计数器TIM_CUNT2
  BTFSC STATUS,Z   
  GOTO INT01
  DECF TIM_CUNT2,F
INT01:  NOP     
  NOP
  CALL DISPLAY  ;显示LED
  NOP
  NOP
  CALL KEYBOARD ;检测键盘
  NOP
  NOP
 NOP
  NOP     ; 
  MOVF WW_TEMP,W
  MOVWF WW
  SWAPF STATUS_TEMP,W
  MOVWF STATUS
  SWAPF W_TEMP,F
  SWAPF W_TEMP,W
  RETFIE 
;////////////////////////////////////////////////////////////////////////  
KEYBOARD:
  BCF     STATUS,RP0 
  BCF STATUS,RP1 ;BANK0
   BTFSS PORTA,S1
   GOTO  DOWN
   NOP
   BTFSS PORTA,S2
   GOTO UP
   GOTO KEY_SCH
   ;去抖动
DOWN:   BTFSS SG_S1,0
  GOTO DOWN1  ;第一次有 DOWN 键按下
  BTFSC SG_S1,1
  GOTO DOWN2  ;长按键
  BSF SG_S1,1  ;确认有 DOWN 键按下
  GOTO KEY_RET
DOWN1:  BSF SG_S1,0  ;第一次有 DOWN 键按下标志
  GOTO KEY_RET
  NOP
DOWN2:  BTFSC SG_S1,2
  GOTO DOWN3
  MOVLW 14H  ;确认有长键延时 200 ms  
  MOVWF TIM_CUNT1
  BSF SG_S1,2
  GOTO KEY_RET
DOWN3:  MOVF TIM_CUNT1,W
  BTFSS STATUS,Z
  GOTO KEY_RET
  BSF BIT_SG,KEY_D ;
  MOVLW 14H  ;长按键周期200 ms
  MOVWF TIM_CUNT1
  GOTO KEY_RET 
    
  
  
UP:   BTFSS SG_S2,0
  GOTO UP1  ;第一次有 UP 键按下
  BTFSC SG_S2,1
  GOTO UP2  ;长按键
  BSF SG_S2,1  ;确认有 UP 键按下

上一页  [1] [2] [3] [4]  下一页


本文关键字:通信  程序  键盘  PIC单片机单片机-工控设备 - PIC单片机

上一篇:pic16f84 LED频率计