?? zlg7289.c
字號:
#include "system.h"
/********發送7289命令子程序********/
void send_command(unsigned char i_command)
{
unsigned char i;
for(i=0; i<8; i++)
{
DIO= ( (i_command & 0x80)==0x80 ? 1:0 ); //發送最高位,總是在clk的下降沿
delay_us(20);
CLK=1; // clk=1;
delay_us(20);
CLK=0; // clk=0;
i_command=i_command<<1; //移位命令,最高位在前
}
// CLK=0; //發送完后將線上數據置為初始值
// DIO=1; //CLK=0, DIO=1;
delay_us(20);
}
/********7289接收數據***********/
unsigned char recieve_data(void)
{
unsigned char i;
unsigned char key_data=0; //clear
// DIO=1; //data變為輸入,需要讀引腳
for(i=0; i<8; i++)
{
CLK=1; //clk=1
delay_us(20); //先延遲25us
key_data <<=1; //左移數據
key_data |= DIO_IN ? 0x01:0; //數據讀入key_data的最低位
CLK = 0;
delay_us(20);
}
// DIO=0;
// DIO=1;
return key_data;
}
/* 7289發單字節命令 */
void send_single_command(unsigned char command_7289)
{
// cannot_send_7289_command = 1; //屏蔽其他使用7289功能
DDRB=0xf7;
delay_us(20);
CS = 0; //使CS端出現一個下降沿
delay_us(50);
send_command(command_7289);
CS = 1; //CS 置為初始值
}
/* 7289發雙字節命令 */
void send_double_command(unsigned char command_7289_a, unsigned char command_7289_b)
{
// unsigned char i;
//cannot_send_7289_command = 1; //屏蔽其他使用7289功能
DDRB=0xf7;
delay_us(20);
CS = 0; //使CS端出現一個下降沿
delay_us(50);
send_command(command_7289_a);
send_command(command_7289_b);
CS=1;
delay_us(50);
}
/* 7289接收鍵盤碼命令 */
unsigned char recieve_key_code(void)
{
unsigned char key_code = 0xFF;
unsigned char recieve_command_code = 0x15;
DDRB=0xf7;
delay_us(20);
CS = 0; //使CS端出現一個下降沿
delay_us(50);
send_command(recieve_command_code);
DDRB=0xf3;
delay_us(20);
key_code = recieve_data();
CS = 1; //CS 置為初始值
delay_us(50);
return key_code;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -