📄 keys1s8.c
字号:
#include <regs240x.h>
void KeysIOinit()
{
MCRA=MCRA&0x00c7; // IOPA3,IOPA4,IOPA5,IOPB端口配置为一般的I/O功能, TMS320LF240x的
// 端口均为8位,MCRA为16位因此控制了IOPA和IOPB的设置
PBDATDIR=0x00FF; // IOPB端口设置为输入方式
PADATDIR=PADATDIR|0x0FF38;
PADATDIR=PADATDIR&0x0FF00; //IOPA3,IOPA4,IOPA5 设置为输出方式,且LEDCLK=1
PADATDIR=PADATDIR|0x0FF10; // IOPA3,IOPA4,IOPA5 设置为输出方式,选通KEYC;
}
int Keys1s8(void)
{
unsigned long int i = 0;
KeysIOinit(); // I/O初始化子程序
for (i=0; i<10; i++){} //延时
//判是否按下键
if ((PBDATDIR&0x00FF)!=0x00ff)
{
for (i=0; i<1000; i++){} //延时消抖
if ((PBDATDIR&0x00FF)==0x00FE)
{
while ((PBDATDIR&0x00FF)==0x00FE) //判S1是否送开
for (i=0; i<1000; i++){}
return (1); //若按下,返回1
}
if ((PBDATDIR&0x00FF)==0x00Fd)
{
while ((PBDATDIR&0x00FF)==0x00Fd) //判S2是否送开
for (i=0; i<1000; i++){}
return (2); //若按下,返回2
}
if ((PBDATDIR&0x00FF)==0x00Fb)
{
while ((PBDATDIR&0x00FF)==0x00Fb) //判S3是否送开
for (i=0; i<1000; i++){}
return (3); //若按下,返回3
}
if ((PBDATDIR&0x00FF)==0x00F7)
{
while ((PBDATDIR&0x00FF)==0x00F7) //判S4是否送开
for (i=0; i<1000; i++){}
return (4); //若按下,返回4
}
if ((PBDATDIR&0x00FF)==0x00eF)
{
while ((PBDATDIR&0x00FF)==0x00EF) //判S5是否送开
for (i=0; i<1000; i++){}
return (5); //若按下,返回5
}
if ((PBDATDIR&0x00FF)==0x00dF)
{
while ((PBDATDIR&0x00FF)==0x00dF) //判S6是否送开
for (i=0; i<1000; i++){}
return (6); //若按下,返回6
}
if ((PBDATDIR&0x00FF)==0x00bF)
{
while ((PBDATDIR&0x00FF)==0x00bF) //判S7是否送开
for (i=0; i<1000; i++){}
return (7); //若按下,返回7
}
if ((PBDATDIR&0x00FF)==0x007F)
{
while ((PBDATDIR&0x00FF)==0x007F) //判S8是否送开
for (i=0; i<1000; i++){}
return (8); //若按下,返回8
}
}
return (0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -