📄 main.c
字号:
//===============================================================
//
// The information contained herein is the exclusive property of
// Sunplus Technology Co. And shall not be distributed, reproduced,
// or disclosed in whole in part without prior written permission.
//
// (C) COPYRIGHT 2001 SUNPLUS TECHNOLOGY CO.
// ALL RIGHTS RESERVED
//
// The entire notice above must be reproduced on all authorized copies.
//
//==============================================================
//============================================================
// 工程名称: KEY-7.spj
//
// 功能描述: 按下某按键,点亮对应的发光二极管。
//
// 参考外围接线:IOA0~IOA7与1×8键盘相连,
// 1×8键盘的公共端接到高电平(VCC)上,
// IOB0~IOB7与8个发光二极管相连
//
// 文件来源: 《61板傻瓜书》第七章
// IDE环境: SUNPLUS u'nSPTM IDE 1.8.0(or later)
//
// 涉及的库: (a) C-Lib: (CMacro.lib);
//
//
// 组成文件: main.c
//
// 日期: 2005-3-25
//===========================================================
#define P_IOA_Data (volatile unsigned int *)0x7000 // 定义P_IOA_Data指针,使其指向0x7000的地址单元
#define P_IOA_Buffer (volatile unsigned int *)0x7001 // 定义P_IOA_Buffer指针,使其指向0x7001的地址单元
#define P_IOA_Dir (volatile unsigned int *)0x7002 // 定义P_IOA_Dir指针,使其指向0x7002的地址单元
#define P_IOA_Attrib (volatile unsigned int *)0x7003 // 定义P_IOA_Attrib指针,使其指向0x7003的地址单元
#define P_IOB_Data (volatile unsigned int *)0x7005 // 定义P_IOB_Data指针,使其指向0x7005的地址单元
#define P_IOB_Buffer (volatile unsigned int *)0x7006 // 定义P_IOB_Buffer指针,使其指向0x7006的地址单元
#define P_IOB_Dir (volatile unsigned int *)0x7007 // 定义P_IOB_Dir指针,使其指向0x7007的地址单元
#define P_IOB_Attrib (volatile unsigned int *)0x7008 // 定义P_IOB_Attrib指针,使其指向0x7008的地址单元
#define ClearWatchdog (volatile unsigned int *)0x7012 // 定义ClearWatchdog指针,使其指向0x7012的地址单元
int main()
{
int i,key_data;
*P_IOA_Data = 0x0000; //设置IOA0~IOA15为带下拉的低电平输入
*P_IOA_Dir = 0x0000;
*P_IOA_Attrib = 0x0000;
*P_IOB_Data = 0x0000; //设置IOB0~IOB15为带数据缓存的低电平输出
*P_IOB_Dir = 0xffff;
*P_IOB_Attrib = 0xffff;
while(1)
{
if(*P_IOA_Data!=0x0000) //有键按下
{
key_data = *P_IOA_Data;
switch(key_data)
{ case 0x01: *P_IOB_Data = 0x0001; break; //按键S1按下,点亮发光二极管D1
case 0x02: *P_IOB_Data = 0x0002; break; //按键S2按下,点亮发光二极管D2
case 0x04: *P_IOB_Data = 0x0004; break; //按键S3按下,点亮发光二极管D3
case 0x08: *P_IOB_Data = 0x0008; break; //按键S4按下,点亮发光二极管D4
case 0x10: *P_IOB_Data = 0x0010; break; //按键S5按下,点亮发光二极管D5
case 0x20: *P_IOB_Data = 0x0020; break; //按键S6按下,点亮发光二极管D6
case 0x40: *P_IOB_Data = 0x0040; break; //按键S7按下,点亮发光二极管D7
case 0x80: *P_IOB_Data = 0x0080; break; //按键S8按下,点亮发光二极管D8
}
}
for(i=0;i<0x0f00;i++) //延长发光二极管点亮一段时间
{*ClearWatchdog = 0x0001; }
*ClearWatchdog = 0x0001; //清看门狗
*P_IOB_Data = 0x0000; //熄灭所有发光二极管
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -