RSS

单片机的接口设计02

来源:网络 作者:佚名 时间:2008-06-25 Tag:单片机   接口设计   点击:

;写器件地址
 MOV A,COMMAND 
 ;根据命令及识别字散转
 SWAP A 
 ANL A,#0FH 
 CJNE A,#09H,XRW1 
 ;指令的高4位为09H表示R_WCR
 AJMP R_WCR   
XRW1: CJNE A,#0AH,XRW2   
 ;指令的高4位为0AH表示W_WCR
 AJMP W_WCR   
XRW2: CJNE A,#0BH,XRW3   
 ;指令的高4位为0BH表示R_ROM(读寄存器)
 AJMP R_ROM   
XRW3: CJNE A,#0CH,XRW4   
 ;指令的高4位为0CH表示W_ROM(写寄存器)
 AJMP W_ROM   
XRW4: CJNE A,#0DH,XRW5   
 ;指令的高4位为0DH表示将寄存器中的值传送到WCR
 AJMP ROM_WCR   
XRW5: CJNE A,#0EH,XRW6   
 ;指令的高4位为0EH表示将WCR中的值传送到寄存器
 AJMP WCR_ROM   
XRW6: CJNE A,#01H,XRW7   
 ;指令的高4位为01H表示全局寄存器中值传送到WCR
 AJMP A_ROM_WCR   
XRW7: CJNE A,#08H,XRW8   
 ;指令的高4位为08H表示全局WCR中值传送到寄存器
 AJMP A_WCR_ROM   
XRW8: CJNE A,#02H,XRW9   
 ;指令的高4位为02H表示指定的WCR增/减
 AJMP INC_DEC   
XRW9: ACALL STOP_IC   
 ;命令执行完毕,STOP并返回
 RETI   
R_WCR: MOV A,COMMAND  
 ;读WCR子程序
 ACALL WR_BYTE 
 ACALL RD_BYTE 
 MOV RD_DATA,A 
 ACALL ACK_IC 
 AJMP XRW9 
W_WCR: MOV A,COMMAND
 ;写WCR子程序
 ACALL WR_BYTE 
 MOV A,WR_DATA 
 ACALL WR_BYTE 
 AJMP XRW9   
R_ROM: MOV A,COMMAND   
 ;读寄存器子程序
 ACALL WR_BYTE   
 ACALL RD_BYTE   
 MOV RD_DATA,A   
 ACALL ACK_IC   
 AJMP XRW9   
W_ROM: MOV A,COMMAND   
 ;写寄存器子程序
 ACALL WR_BYTE   
 MOV A,WR_DATA   
 ACALL WR_BYTE   
 AJMP XRW9   
ROM_WCR: MOV A,COMMAND   
 ;寄存器中数据送WCR子程序
 ACALL WR_BYTE   
 AJMP XRW9   
WCR_ROM: MOV A,COMMAND   
 ;WCR中数据送寄存器子程序
 CALL WR_BYTE   
 AJMP XRW9   
A_ROM_WCR: MOV A,COMMAND   
 ;全局寄存器中数据送WCR子程序
 ACALL WR_BYTE   
 AJMP XRW9   
A_WCR_ROM: MOV A,COMMAND   
 ;全局WCR中数据送寄存器子程序
 ACALL WR_BYTE   
 AJMP XRW9   
INC_DEC: MOV R7,#63   
 MOV A,COMMAND   
 ;指定的WCR增/减子程序
 ACALL WR_BYTE   
 JB INCDEC,WCRINC   
 CLR SDA   
 SETB SCL   
 JMP IDC   
WCRINC: CLR SCL   
 SETB SDA   
IDC: CLR SCL   
 SETB SCL   
 DJNZ R7,IDC   
 AJMP XRW9   
START_IC:SETB SDA   
 ;开始子程序
 SETB SCL   
 CLR SDA   
 CLR SCL   
 RET    
WR_BYTE:MOV B,#08   
 ;写字节子程序,共写8位
WR_BYTE1:CLR SCL   
 RLC A   
 ;向左移位至CY
 MOV SDA,C   
     
 ;数据输出     
 SETB SCL   
 DJNZ B,WR_BYTE1   
 CLR SCL   
 SETB SDA   
 SETB SCL   
 JB SDA,$   
 ;检测X9241E的应答
 CLR SCL   
 RET    
RD_BYTE: MOV B,#08   
 ;读字节子程序,共读8位
RD_BYTE1: SETB SCL   
 MOV C,SDA   
 RLC A   
 CLR SCL   
 DJNZ B,RD_BYTE1   
 RET    
STOP_IC: CLR SDA   
 ;停止子程序
 SETB SCL   
 SETB SDA   
 CLR SCL   
 CLR SDA   
 RET    
ACK_IC: CLR SDA   
 ;应答子程序
 SETB SCL   
 CLR SCL   
 RET


1.部分资源来自网络,经ET电子归类整理,旨在服务电子爱好者并无商业目的,不保证正确性与完整性.
2.如果您觉得本站资源对您有用,请告知您的好友,用搜索引擎搜"ET电子"即可.


最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
教程下载