?? iar11-1.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 + -