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

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

点击数:7923 次   录入时间:03-04 11:52:16   整理:http://www.55dianzi.com   PIC单片机
  GOTO KEY_RET
UP1:  BSF SG_S2,0  ;第一次有 UP 键按下标志
  GOTO KEY_RET
  NOP
UP2:  BTFSC SG_S2,2
  GOTO UP3
  MOVLW 14H  ;确认有长键延时 200 ms  
  MOVWF TIM_CUNT2
  BSF SG_S2,2
  GOTO KEY_RET
UP3:  MOVF TIM_CUNT2,W
  BTFSS STATUS,Z
  GOTO KEY_RET
  BSF BIT_SG,KEY_U ;
  MOVLW 14H  ;长按键周期200 ms
  MOVWF TIM_CUNT2
  GOTO KEY_RET
  ;  
KEY_SCH: BTFSS SG_S1,1
  GOTO  KEY_SCH1
  BSF BIT_SG,KEY_DOK ;确认有 DOWN 键按下并放开
  GOTO KEY_RET
          

KEY_SCH1: BTFSS SG_S2,1
  GOTO NOKEY
  BSF BIT_SG,KEY_UOK ;确认有 UP 键按下并放开
  GOTO KEY_RET 
  
NOKEY:  CLRF SG_S1  ;排除干扰
  CLRF SG_S2
  
KEY_RET: NOP
  NOP
  RETURN

;//////////////// ;LED显示 /////////////////////////////////////////////////////////
DISPLAY: NOP
  BTFSC SG_DIS,0 
       GOTO DIS_H  
DIS_L:   BCF PORTB,DSH ;显示低位
  MOVF LED_L,W
  MOVWF PORTB
  BSF PORTA,DSL
  BSF SG_DIS,0
  GOTO DIS_RET
DIS_H:  BCF PORTA,DSL ;显示高位
  MOVF LED_H,W
  MOVWF PORTB
  BSF PORTB,DSH
  BCF SG_DIS,0
DIS_RET: NOP
  RETURN

 

;//////////////// LED显示值获取 /////////////////////////////////////////////////////////
LED_HL:  CLRF LED_NH
  CLRF LED_NL
  MOVF CH_X,W
  MOVWF WW
LED0:  MOVLW 0AH
  SUBWF WW,W
  BTFSS STATUS,C ;SKPC
  GOTO LED_OK  ;WW小于10
  MOVWF WW
  INCF LED_NH  ;高位加一
  GOTO LED0  
LED_OK:  MOVF WW,W
  MOVWF LED_NL  ;余数做低位
  
  MOVLW LED_TAB  ;取表LED_TAB
  MOVWF WW
  MOVF LED_NL,W
  ADDWF WW,W  ; 
  CALL LED_VALU
  MOVWF LED_L
  
  MOVLW LED_TAB  ;取表LED_TAB
  MOVWF WW
  MOVF LED_NH,W
  ADDWF WW,W  ; 
  CALL LED_VALU
  MOVWF LED_H
  
  RETURN

  

;//////////////////////////////////////////////////////////////////////////////////  
;///////////////频道设定///////////////////////////////////////////////////////////
CXA: BCF     STATUS,RP0 
  BCF STATUS,RP1 ;BANK0
  CLRWDT
  MOVF CH_X,W  ;VHF/UHF 判断
  MOVWF UVHF
  SUBLW 0DH  ;CH_X 是否小于13?
  BTFSC STATUS,C ;SKPC
  GOTO VHF_GET  ;小于则转VHF_GET
  MOVLW 15H  ; 21
  SUBWF UVHF,F  ;频道值入UVHF
UHF_GET: MOVLW CXA_TAB2 ;取表CXA_TAB2
   MOVWF WW
   BCF STATUS,C ;CLRC
   RLF UVHF,F
  MOVF UVHF,W
  ADDWF WW,W  ; 
  CALL CXA_VALU2
  MOVWF DATA2
  INCF UVHF
  MOVF UVHF,W
  ADDWF WW,W  ;
  CALL CXA_VALU2
  MOVWF DATA3
  GOTO I2C_SEND
  
  
  DECF UVHF  ;DATA1,DATA4
  MOVLW CXA_TAB3 ;取表CXA_TAB3
   MOVWF WW
   ;BCF STATUS,C ;CLRC
   ;RLF UVHF,F
  MOVF UVHF,W
  ADDWF WW,W  ; 
  CALL CXA_VALU3
  MOVWF DATA1
  INCF UVHF
  MOVF UVHF,W
  ADDWF WW,W  ;
  CALL CXA_VALU3
  MOVWF DATA4
  GOTO I2C_SEND
  
;////////////////////////////////////////////////////////////  
    
VHF_GET: MOVLW CXA_TAB1 ;取表CXA_TAB1
   MOVWF WW
   BCF STATUS,C ;CLRC
   RLF UVHF,F
  MOVF UVHF,W
  ADDWF WW,W  ;
  CALL CXA_VALU1
  MOVWF DATA2
  INCF UVHF
  MOVF UVHF,W
  ADDWF WW,W  ;
  CALL CXA_VALU1
  MOVWF DATA3
  GOTO I2C_SEND
  
  DECF UVHF  ;DATA1,DATA4
  MOVLW CXA_TAB3 ;取表CXA_TAB4
   MOVWF WW
   ;BCF STATUS,C ;CLRC
   ;RLF UVHF,F
  MOVF UVHF,W
  ADDWF WW,W  ; 
  CALL CXA_VALU3
  MOVWF DATA1
  INCF UVHF
  MOVF UVHF,W
  ADDWF WW,W  ;
  CALL CXA_VALU3
  MOVWF DATA4
  GOTO I2C_SEND
    

;/////////////////////////////////////////////////////////////////////////////  
I2C_SEND: NOP
  MOVLW B’11101100’
  MOVWF DATA1
  MOVLW 00H;B’01100010’
  MOVWF DATA4
I2C_START: NOP
  CLRWDT
  BCF INTCON,GIE 
  MOVLW 04H  ;发送4个字节
  MOVWF CUNT2
  CALL STA  ;启动I2C总线
  MOVLW MD_ADDR_W ;I2C地址
  MOVWF WW
  CALL WRBYT
  CALL CACK
  BTFSC BIT_SG,F0
  GOTO I2C_START ;非应答位则重发
  MOVLW DATA1  ;所发4字节数据的首地址
  MOVWF FSR
WRDA:  MOVF   INDF,W
  MOVWF WW
  CALL WRBYT
  CALL CACK
  BTFSC BIT_SG,F0
  GOTO I2C_SEND ;发送有误,重发
  INCF FSR
  DECFSZ CUNT2,F
  GOTO WRDA
  CALL STOP
  BSF INTCON,GIE
  RETURN

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


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

上一篇:pic16f84 LED频率计