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

📄 led_4.c

📁 这是利用ATMEGA对4位LED的实现程序
💻 C
字号:
#include <iom64.h>
#include <intrinsics.h>
//定义延时程序
#define F_CPU 1	  //1MHz时钟
#define delay_us(t_nus)	__delay_cycles(t_nus*F_CPU)
#define delay_ms(t_nms) __delay_cycles(t_nms*F_CPU*1000)

unsigned char dis_code[]={0xc0,0xf9,0xa4,0xb0,0x99,
         0x92,0x82,0xf8,0x80,0x90};	//共阳数码管,段代码1~9 PE口
unsigned char dis_bite[]={0x10,0x20,0x40,0x80};	//位控制 PA4~7

/**********************************************************/
/*键盘扫描函数,读取当前键盘的状态                         */
/*有按键按下返回相应按键值,无按键按下返回"0x00"           */
/*按键列表:                                               */
/*         PB0  PB1  PB2  PB3                             */
/*   PB4    1	 2    3	   4                              */
/*   PB5    5	 6    7    8                              */
/*   PB6    9    A    B    C                              */
/*   PB7    D    E    F    H                              */
/**********************************************************/
/*unsigned char key_read(void)
{
  unsigned char i;
 
  DDRD = 0x00;		//获取行地址,读回0作为地址指示
  PORTD = 0x0F;
  DDRD = 0xF0;
  i = PIND;
 
  DDRD = 0x00;  	//获取列地址
  PORTD = 0xF0;
  DDRD = 0x0F;
  i |= PIND;
 
  DDRD = 0x00; 		//输出复位
  PORTD = 0xFF;
 
  switch (i) 	//将按键码转换成键值
  {
  case  0x00: return 0x00;
  case  0xEE: return 1;
  case  0xED: return 2;
  case  0xEB: return 3;
  case  0xE7: return 4;
  case  0xDE: return 5;
  case  0xDD: return 6;
  case  0xDB: return 7;
  case  0xD7: return 8;
  default : return 0x00;
  } 
}*/
/********************************************************/
/*按键获取函数,获取按键信号,包含有状态记录及按键去颤抖. */
/*有正确按键按下返回相应按键值,无正确按键按下返回"0x00" */
/********************************************************/
/*unsigned char get_key(void)
{
  unsigned char i;
  static unsigned char j;	//按键记录
  i = key_read();
  if (i == 0x00)   //无有效按键按下
  {
    j = 0x00;     //清除按键记录
    return 0x00;  //程序退出
  }
  if(j == 0x00) 	 //为新按键
  {
    j = i;         //保存本次采样结果
    delay_ms(10);		//去按键颤抖
    i = key_read();
    if(i == j) 
    {
      return i;
    }
  }
  return 0x00;
}*/

void main(void)
{
  //端口初始化
  SFIOR &= 0xFB;
  PORTA = 0xFF;
  PORTC = 0xFF;
  PORTD = 0xFF;
  PORTE = 0xFF;
  PORTF = 0xFF;
  PORTG = 0xFF;

  
  
  while(1)
  {
    unsigned char a;
    //a = get_key();
    a=0;
    DDRE = 0xFF;
    DDRA |= 0x10;
    PORTE = dis_code[a];
    PORTA |= 0x10;
    delay_ms(10);
  }
}
	  
	  
	

  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -