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

📄 iar11-1.c

📁 手把手教你学AVR单片机C程序设计实验程序
💻 C
字号:
#include <iom16.h>
#define  EEWE     1
#define  EEMWE    2
#define  EERE     0
#define uchar unsigned char	//变量类型的宏定义
#define uint  unsigned int	
uchar __flash SEG7[10]={0x3f,0x06,0x5b, //共阴极数码管0~9的字形码
0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar __flash ACT[3]={0xfe,0xfd,0xfb};//3位共阴极数码管的位选码
uchar val,DispBuff[3];		//定义全局变量及数组
//*************************************
void delay_ms(uint k) 		//延时子函数
{
uint i,j;			
    for(i=0;i<k;i++)
    {
       for(j=0;j<1140;j++)
       ;
    }
}
//***************写EEPROM子函数*****************
void WRITE_EEP(uint address,uchar dat) //dat为待写数据,add为EEPROM的某单元地址
{
while(EECR&(1<<EEWE));	//等待前一次写操作完成
EEAR=address;				//设定单元地址
EEDR=dat;				//将数据写入EEDR
EECR|=(1<<EEMWE);		//允许EEPROM操作
EECR|=(1<<EEWE);		//开始EEPROM写操作
}
//****************读EEPROM子函数*******************
uchar READ_EEP(uint address)	// add为EEPROM的某单元地址
{
while(EECR&(1<<EEWE));	//等待前一次写操作完成
EEAR=address;				//设定单元地址
EECR|=(1<<EERE);		//开始EEPROM写操作
return EEDR;			//返回读出的数据
}
//****************数据转换子函数*********************
void conv(uchar i)	//将变量i分解成待显数并存入数组
{
uchar x;
x=i;
DispBuff[2]=x/100;
x=i;
DispBuff[1]=(x/10)%10;
x=i;
DispBuff[0]=x%10;
}
//*************************************
void display(uchar *p) //将数组扫描到数码管上显示
{
PORTA=SEG7[*p];
PORTC=ACT[0];
delay_ms(1);
PORTA=SEG7[*(p+1)];
PORTC=ACT[1];
delay_ms(1);
PORTA=SEG7[*(p+2)];
PORTC=ACT[2];
delay_ms(1);
}
//*************************************
void port_init(void)		//端口初始化子函数
{							
 PORTA = 0xFF;				// PA端口初始化输出11111111
 DDRA  = 0xFF;				//将PA端口设为输出
 PORTB = 0xFF;				// PB端口初始化输出11111111
 DDRB  = 0xFF;				//将PB端口设为输出
 PORTC = 0xFF; 				// PC端口初始化输出11111111
 DDRC  = 0xFF;				//将PC端口设为输出
 PORTD = 0xFF;				// PD端口初始化输出11111111
 DDRD  = 0xFF;				//将PD端口设为输出
}							
//*************************************
void main(void)				//定义主函数
{
port_init();				//调用端口初始化子函数
WRITE_EEP(345,98);delay_ms(10);	//将98写入EEPROM的345单元
val=READ_EEP(345);delay_ms(10);//从EEPROM的345单元中读出数据并传给val
conv(val);					//调用数据转换子函数
while(1)					//无限循环
{
display(DispBuff);			//数码管显示
}
}

⌨️ 快捷键说明

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