- 4
- 0
- 约1.23万字
- 约 47页
- 2016-11-11 发布于湖北
- 举报
读取按键代码:0111xxxxxxxxB 读取按键代码命令用于获得CH451最近检测到的有效按键的按键代码。 CH451通常从DOUT引脚输出按键代码,按键代码总是7位数据,最高位是状态码,位5~位0是行/列扫描码。 (位6:状态码(1-按下, 0-释放) 位5~3:行扫描码 位2~0:列扫描码) 读取按键代码命令的位数据Bit7~Bit0可以是任意值,所以控制器可以将该操作命令缩短为4位数据Bit11~Bit8。例如,CH451检测到有效按键并中断时,则先向CH451发出读取按键代码命令0111B,然后再从DOUT获得按键代码。 1.4.3 CH451与单片机的接口电路 CPU与CH451接口电路 数码显示管与CH451接口电路 8X8键盘与CH451接口电路 1.4.4 单片机接口程序 ;需要主程序定义的参数 LOAD BIT P1.2 ;串行命令加载,上升沿激活 DIN BIT P1.0 ;串行数据输出,接CH451的数据输入 DCLK BIT P1.1 ;串行数据时钟,上升沿激活 DOUT BIT P3.3 ;INT1,键盘中断和键值数据输入, ; 接CH451的数据输出 KEY DATA 45H ;存放键盘中断中读取的键值 ;********************************************* ; CPU和451的初始化子程序 ;----------------------------- CH451_INIT: ;---初始化子程序 CLR DIN ; “先低” 产生一个下跳脉冲(复位时高) SETB DCLK ; 置为默认的高电平 SETB DIN ; “后高”,选CH451为4线串行接口 SETB LOAD ;--- SETB DOUT ;置8031的对应PIN为输入,(CH451为输出) CLR IT1 ; 置外部信号为低电平触发 CLR IE1 ; 清中断标志 SETB PX1 ; 置外部中断1为高优先级 SETB EX1 ; 允许键盘中断 SETB EA ;开总中断 RET ;************************************** ;发送命令到451的子程序 ;入口: B—ACC中待写的12位数据,低8位在A中,高4位在B的低4位中 ;使用寄存器: ACC, B, R7 ;特别说明:访问451,不可以重入 ;-------------------------------- WRITE: PUSH ACC ;保护ACC的值 CLR EX1 ;禁止键盘中断(互斥) CLR LOAD ;一帧命令准备开始 MOV R7,#08H ;先将ACC中的8位送出 WRITE_8: RRC A ;低位在前,高位在后 CLR DCLK MOV DIN,C ;送出一位数据 SETB DCLK ;上升沿通知CH451输入位数据 DJNZ R7,WRITE_8 ;位数据未完,继续 MOV A,B MOV R7,#04H ; 再将B中的4位数据送出 WRITE_4: RRC A ;低位在前,高位在后 CLR DCLK MOV DIN,C ; 送出一位数据 SETB DCLK ; 上升沿通知CH451输入位数据 DJNZ
原创力文档

文档评论(0)