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

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

点击数:7923 次   录入时间:03-04 11:52:16   整理:http://www.55dianzi.com   PIC单片机

;pIC16f627键盘显示+E2PROM存取+模拟I2C总线通信等模块示例程序
;已经调试通过,愿与各位初学者共享 

 list      p=16f627            ; list directive to define processor
#include <P16f627.inc>

;__CONFIG (_INCRC_OSC_NOCLKOUT &  _MCLRE_OFF & _LVP_OFF & _PWRTE_ON & _BODEN_ON & _WDT_ON);

;数据寄存器及标号定义:
SDA  EQU    2 ;PA2
SCL  EQU 3 ;PA3
DSL  EQU 4 ;PA4,LED低位
DSH  EQU 7 ;PB7,LED高位
S1  EQU 1 ;PA1, UP
S2  EQU 0 ;PA0, DOWN

LED_L  EQU 20H ;LED 低位数据积存器
LED_H  EQU 21H ;LED 高位数据积存器
LED_NL  EQU 22H ;LED 低位计数器
LED_NH  EQU 23H ;LED 高位计数器

CH_X  EQU 24H ;频道值寄存器

ADDR  EQU 25H ;EEPROM 读写地址
VALU  EQU 26H ;EEPROM 写入值
REC_  EQU 27H ;EEPROM 读计数
WRC_  EQU 28H ;EEPROM 写计数
DATA0  EQU 29H ;EEPROM 读出值

MD_ADDR_W EQU 0C8H ;3050 ADDRESS /WRITE
MD_ADDR_R EQU 0C9H ;3050 ADDRESS READ 
DATA1  EQU 2AH ;3050寄存器组
DATA2  EQU 2BH ;
DATA3  EQU 2CH ;
DATA4  EQU 2DH ; 

SG_S1  EQU 2FH ;SIGN_S1
SG_S2  EQU 30H ;SIGN_S2 

W_TEMP  EQU 31H
;W_TEMP  EQU 0B1H
STATUS_TEMP EQU 32H
;STATUS_TEMP EQU 0B2H
WW  EQU 33H ;通用寄存器
WW_TEMP  EQU 34H
SG_DIS  EQU 35H ;LED高低位显示标志
UVHF  EQU 36H ;

BIT_SG  EQU 37H ;
F0  EQU 0 ;I2C通信中应答信号正常(0)与不正常(1)标志
KEY_U  EQU 1
KEY_D  EQU 2
KEY_UOK  EQU 3
KEY_DOK  EQU 4

CUNT1  EQU 38H
CUNT2  EQU 39H
TIM_CUNT1 EQU 3AH ;
TIM_CUNT2 EQU 3BH ;
CUNT3  EQU 3EH
CUNT4  EQU 3FH


;////////////////////////////////////////////////////////////////////////////
;////////////////////////////////////////////////////////////////////////////
;---------------PROGRAM FILE------------------- 
 
  ORG     00H              ; processor reset vector
  GOTO START
  
  ORG 04H
  BTFSC PIR1,TMR1IF
  GOTO T0_INT
  RETFIE
  
  
  ORG 10H

;////////////////////////////////////////////////////////////////  
LED_VALU: MOVWF PCL  ;
LED_TAB: RETLW 10H  ;0
  RETLW 73H  ;1
  RETLW 44H  ;2
  RETLW 41H  ;3
  RETLW 23H  ;4
  RETLW 09H  ;5
  RETLW 08H  ;6
  RETLW 53H  ;7
  RETLW 00H  ;8
  RETLW 01H  ;9  

;/////////////////////////////////////////////////////////////////
CXA_VALU1: MOVWF PCL
CXA_TAB1: DT 19H,24H  ;CH0 DATA2, DATA3
  DT 19H,24H  ;CH1
  ……

  DT 38H,04H  ;CH12

CXA_VALU2: MOVWF PCL
CXA_TAB2: DT 75H,0C4H ;CH21 DATA2, DATA3
  DT 77H,0C4H ;CH22
  ……

  DT 0D5H,0C4H ;CH69
   
 

CXA_VALU3: MOVWF PCL
CXA_TAB3: DT 0ECH,62H ;CH21 DATA1, DATA4
  DT 0ECH,62H ;CH22
 ……

  DT 0ECH,62H ;CH69
  

  

START:  
  ;CALL 3FFH
  ;MOVWF OSCCAL
  CLRWDT
  BSF STATUS,RP0 ;BANK1
  BCF STATUS,RP1
  
  BSF PCON,OSCF ;选择内部4M RC 震荡器
  
  BCF STATUS,RP0 ;BANK0
  CLRF PORTA  ;I/O口设置 
  CLRF PORTB
  MOVLW 07H
  MOVWF CMCON
  BSF STATUS,RP0 ;BANK1
  MOVLW 0E3H  ;PA.0.1.5.6.7为输入,其余为输出
  MOVWF TRISA
  MOVLW 00H
  MOVWF TRISB
  BCF STATUS,RP0 ;BANK0
  
  MOVLW 20H  ;寄存器20H/7FH清零
  MOVWF FSR
LOOP:   CLRF INDF
  INCF FSR
  BTFSS FSR,7
  GOTO LOOP 
  
  
  ;首次开机判别
  NOP
  NOP
  MOVLW 00H  ;检测EEPROM地址00H是否为55H
  MOVWF ADDR  ;EEPROM 地址→ADDR
   CALL EEPROM_R ;ADDR 内容读至 DATA0
   MOVF DATA0,W
   ANDLW   0AAH
   BTFSC STATUS,Z
   GOTO OLD_CH
   NOP   ;首次开机 21 频道设定 
   MOVLW 00H  ;EEPROM 的00H地址放首次开机标志
   MOVWF ADDR  
   MOVLW 55H
   MOVWF VALU
   CALL EEPROM_W
   MOVLW 01H  ;EEPROM 的01H地址放频道值CH_X
   MOVWF ADDR
   MOVLW 15H  ;05H  ;
   MOVWF VALU
   CALL EEPROM_W
   NOP
   MOVLW 02H  ;02H地址做 CH_X 备份,以防出错
   MOVWF ADDR
   MOVLW 05H
   MOVWF VALU
   CALL EEPROM_W
   MOVLW 15H  ;05H  ;首次开机选择 CH5 频道
   MOVWF CH_X
   GOTO CH_SET
   NOP
OLD_CH:  MOVLW 01H
  MOVWF ADDR
  CALL EEPROM_R
  MOVWF CH_X
CH_SET:  CALL LED_HL
  
  NOP
   NOP
  CALL CXA
  NOP
  ;定时器1初始化
  BSF INTCON,GIE ;总中断使能
  BSF INTCON,PEIE ;
  BCF PIR1,TMR1IF ; 
  BSF STATUS,RP0 ;BANK1

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


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

上一篇:pic16f84 LED频率计