AVR單片機I2C總線實驗
AVR單片機I2C總線實驗。
1、用24C02記錄CPU啟動次數(shù),并在PB口上顯示出來。
2、內(nèi)部1 M晶振,程序采用單任務(wù)方式,軟件延時。
3、進行此實驗請插上JP1的所有8個短路塊,JP7(LED_EN)/PC0/PC1短路塊。
4、通過此實驗,可以I2C總線操作有個初步認識。
*/
1、用24C02記錄CPU啟動次數(shù),并在PB口上顯示出來。
2、內(nèi)部1 M晶振,程序采用單任務(wù)方式,軟件延時。
3、進行此實驗請插上JP1的所有8個短路塊,JP7(LED_EN)/PC0/PC1短路塊。
4、通過此實驗,可以I2C總線操作有個初步認識。
*/
#include "iom16v.h"
extern unsigned char twi_write(unsigned char addr, unsigned char dd);
extern unsigned char twi_read(unsigned char addr, unsigned char *dd);
extern unsigned char twi_read(unsigned char addr, unsigned char *dd);
/*延時函數(shù)*/
void delay_ms(unsigned char i) {
void delay_ms(unsigned char i) {
unsigned char a, b;
for (a = 1; a i; a++) {
for (b = 1; b; b++) {
;
}
}
}
for (a = 1; a i; a++) {
for (b = 1; b; b++) {
;
}
}
}
void main(void) {
unsigned char temp;
PORTA = 0xFF;/*打開上拉*/
DDRA = 0x00;/*方向輸入*/
PORTB = 0xF0;/*電平設(shè)置*/
DDRB = 0xFF;/*方向輸出*/
PORTC = 0xFF;
DDRC = 0x00;
PORTD = 0xFF;
DDRD = 0x00;
twi_read(0x08, temp);
PORTB = ~temp;
temp ++;
twi_write(0x08, temp);
DDRA = 0x00;/*方向輸入*/
PORTB = 0xF0;/*電平設(shè)置*/
DDRB = 0xFF;/*方向輸出*/
PORTC = 0xFF;
DDRC = 0x00;
PORTD = 0xFF;
DDRD = 0x00;
twi_read(0x08, temp);
PORTB = ~temp;
temp ++;
twi_write(0x08, temp);
while (1) {
;
}
}
評論