📄 训练项目七:键盘的使用.c
字号:
/****************************************************************************
** File Name: 键盘的使用
** Createed By: Wangchangsong
** Create Date: 07/28/2008
** Version: 1.0
** Descriptions: led display
**
**---------------------------------------------------------------------------
** Modified By:
** Modified Date:
** Version:
** Descriptions:
**
****************************************************************************/
#include <iom128v.h>
#define data (PIND&0x04)==0x04
/* 判断PD2是否为1 */
#define set_cs asm("sbi 0x18,2")
/* PB输出为1 */
#define set_clk asm("sbi 0x18,3")
/* PB3输出为1 */
#define set_data asm("sbi 0x12,2")
/* PD2输出为1 */
#define cl_cs asm("cbi 0x18,2")
/* PB2输出为0 */
#define cl_clk asm("cbi 0x18,3")
/* PB3输出为0 */
#define cl_data asm("cbi 0x12,2")
/* PD2输出为0 */
#pragma interrupt_handler key_check:5
/* 外部中断3 */
unsigned char k = 0x00;n = 0;
/****************************************************************************
** Function Name: main
** Descriptions:
** Input Parameters: uiTime
** Output parameters: void
** Returned Value: void
**---------------------------------------------------------------------------
****************************************************************************/
void main()
{
unsigned char i = 0;
init_7279();
s_delay();
send (0xA4);
/* 复位 */
while(1)
{
switch(k)
{
case 65:set_cs;send(0xc8);send(0x00);break;/*下载数据且按方式1译码 */
case 66:set_cs;send(0xc8);send(0x01);break;
case 67:set_cs;send(0xc8);send(0x02);break;
case 68:set_cs;send(0xc8);send(0x03);break;
case 73:set_cs;send(0xc8);send(0x04);break;
case 74:set_cs;send(0xc8);send(0x05);break;
case 75:set_cs;send(0xc8);send(0x06);break;
case 76:set_cs;send(0xc8);send(0x07);break;
case 81:set_cs;send(0xc8);send(0x08);break;
case 82:set_cs;send(0xc8);send(0x09);break;
case 83:set_cs;send(0xc8);send(0x0A);break;
case 84:set_cs;send(0xc8);send(0x0B);break;
case 89:set_cs;send(0xc8);send(0x0C);break;
case 90:set_cs;send(0xc8);send(0x0D);break;
case 91:set_cs;send(0xc8);send(0x0E);break;
case 92:set_cs;send(0xc8);send(0x0F);break;
default:break;
}
}
}
/****************************************************************************
** Function Name: key_check
** Descriptions: read the key
** Input Parameters: K
** Output parameters: void
** Returned Value: void
**---------------------------------------------------------------------------
****************************************************************************/
void key_check()
{
n=1;
send(0x15); /* 读键盘指令 */
k=receive()+61;
set_cs;
}
/****************************************************************************
** Function Name: led_init
** Descriptions:
** Input Parameters: uiTime
** Output parameters: void
** Returned Value: void
**---------------------------------------------------------------------------
****************************************************************************/
void led_init (void)
{
DDRB|= 0x0C; /* PB0和PB1为输入 */
set_cs;
send (0xA4);
}
/****************************************************************************
** Function Name: init_7279
** Descriptions: initialization
** Input Parameters: uiTime
** Output parameters: void
** Returned Value: void
**---------------------------------------------------------------------------
****************************************************************************/
void init_7279()
{
SREG|=0x80; /* 状态寄存器,全局中断允许 */
EIMSK|=0x08; /* 外部中断屏蔽寄存器 */
EICRA&=0x3f; /* 外部中断控制寄存器A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -