?? main.c
字號:
/*
實驗十一:
片內EEPROM讀寫實險。
1、用內部EEPROM記錄CPU啟動次數,并在PB口上顯示出來。
2、內部1 M晶振,程序采用單任務方式,軟件延時。
3、進行此實驗請插上JP1的所有8個短路塊,JP7(LED_EN)短路塊。
4、通過此實驗,可以對對內部EEPROM有個初步認識,了解EEPROM函數的操作。
5、可過復位鍵讓系統重啟,這樣就可以更新顯示了。
AVR mega16學習板
www.iccavr.com
14:42 2007-4-9
*/
#include "iom16v.h"
/*延時函數*/
void delay_ms(unsigned char i) {
unsigned char a, b;
for (a = 1; a < i; a++) {
for (b = 1; b; b++) {
;
}
}
}
/*EEPROM讀取函數*/
/*addr:地址;number:長度;p_buff:讀出數據存放指針*/
void eprom_read(unsigned int addr, unsigned char number, unsigned char *p_buff) {
while(EECR & (1 << EEWE));
EEARH = 0x00;
while(number --) {
EEARL = addr ++;
EECR |= (1 << EERE);
*p_buff++ = EEDR;
}
}
/*EEPROM寫入函數*/
/*addr:地址;number:長度;p_buff:寫入數據存放指針*/
void eprom_write(unsigned int addr, unsigned char number, unsigned char *p_buff) {
EEARH = 0x00;
while(number --) {
while(EECR & (1 << EEWE));
EEARL = addr ++;
EEDR = *p_buff ++;
EECR |= (1 << EEMWE);
EECR |= (1 << EEWE);
}
}
/*主函數*/
void main(void) {
unsigned char temp;
DDRA = 0x00; /*方向輸入*/
PORTA = 0xFF; /*打開上拉*/
DDRB = 0xFF; /*方向輸出*/
PORTB = 0xFF; /*電平設置*/
DDRC = 0x00;
PORTC = 0xFF;
DDRD = 0x00;
PORTD = 0xFF;
delay_ms(250); /*啟動延時*/
eprom_read(0x10, 0x01, &temp); /*讀出記錄*/
PORTB = ~temp; /*顯示記錄*/
temp ++; /*刷新記錄*/
eprom_write(0x10, 0x01, &temp); /*寫入記錄*/
while (1) {
;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -