⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 端口控制发光二极管亮灭。 【硬件连接】通过SPCE061A的1位I/O端口(本例中使用IOA15端口)
💻 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 + -