电子文章 | 电子资料下载 | 家电维修 | 维修资料下载 | 加入收藏 | 全站地图
您现在所在位置:电子爱好者电子文章电子电路图单片机电路图数字电位器X9241与PIC单片机的接口及程序设计

数字电位器X9241与PIC单片机的接口及程序设计

03-24 03:21:32 | http://www.5idzw.com | 单片机电路图 | 人气:365
标签:电路图讲解,电路图练习,http://www.5idzw.com 数字电位器X9241与PIC单片机的接口及程序设计,http://www.5idzw.com
IORWF ID, 1 ;容至与它们相应的WCR中
MOVLW 3
MOVWF CASE
CALL INSTR_GEN
RETURN
GXFR_WCR: ;传输所有WCR中的内
MOVLW 80H ;容至与它们相应的由R1,
IORWF ID, 1 ;R0指定的数据寄存器中
MOVLW 4
MOVWF CASE
CALL INSTR_GEN
RETURN
INC_WIPER: ;使能增加/减小由P1和
MOVLW 20H ;P0指定的WCR
IORWF ID, 1
MOVLW 5
MOVWF CASE
CALL INSTR_GEN
RETURN
CASE0:CALL GET_BYTE ; 接收一字节
GOTO CASE3
CASE1:MOVF DATA_BYTE, W
CALL SEND_BYTE ;发送数据字节
GOTO CASE3
CASE2:MOVF DATA_BYTE,W
CALL SEND_BYTE
CASE4:STOP_COND
CALL POLLING ;轮询
CASE3:STOP_COND
RETURN
CASE5:MOVLW B’00111111’;取出脉冲增加或减
ANDWF PULSES, W ;少的个数送COUNT
MOVWF COUNT
MOVLW B’10000000’; 取出脉冲增加或减
ANDWF PULSES,W;少的方向位送TEMPP.7
MOVWF TEMPP
WIPER_LOOP:SET_BIT ;发送TEMPP.7至SDA上并
DECFSZ COUNT;产生COUNT个脉冲于SCL
GOTO WIPER_LOOP
STOP_COND ;停止条件
RETURN
SEN_BYTE: 将TEMPP的内容发送出去
MOVWF TEMPP;
MOVLW 8 ; 共发送八位
MOVWF COUNT
BIT_LOOP:SET_BIT
NEXT_BIT:RLF TEMPP
DECFSZ COUNT
GOTO BIT_LOOP
BSF PORTC, 7 ;八位发送完毕
NOP ;释放SDA
NOP
NOP
CLOCK
RETURN
GET_BYTE: ;接收一字节,SDA=1
BSF PORTC, 7
MOVLW 8
MOVWF COUNT
GET_LOOP:
CLOCK ;SDA送C并在SCL上产生一脉冲
RLF DATA_BYTE ;C移位至DATA_BYTE
DECFSZ COUNT
GOTO GET_LOOP
BCF TEMPP, 7 ; 发应答位
SEND_BIT
RETURN
POLLING:
START_COND ;开始条件
MOVF ADDR_BYTE, W ;送地址
AGAIN: CALL SEND_BYTE
BTFSC STATUS,C ;SDA=0?(有应答吗?)
GOTO POLLING ;NO
RETURN ;YES

MAIN:CALL INI ;初始化子程序
MOVLW B’01010000’ ; 装载从器件地址字节
MOVWF ADDR_BYTE
MOVLW B’00001000’ ;装在识别字节,对
MOVWF ID ;EEPOT #2操作
MOVLW 2 ;写入WCR命令
MOVWF COMMAND
MOVLW B’00101011’;设置D5D4D3D2D1D0
MOVWF DATA_BYTE ; =1 0 1 0 1 1 B,即为43D
CALL INTERPRET
MOVLW B’00001000’ ;重新装在识别字节
MOVWF ID
MOVLW B’00001111’ ;减少15个脉冲
MOVWF PULSES
MOVLW 10H ;增加/减少滑动端
MOVWF COMMAND
CALL INTERPRET
etc ......
INI:CLRF PORTC ;使C口为输出
BSF STATUS, 5
CLRF TRISC
etc ......
END

上一页  [1] [2] 

,数字电位器X9241与PIC单片机的接口及程序设计