AVR单片机I2C总线实验
AVR单片机I2C总线实验。
1、用24C02记录CPU启动次数,并在PB口上显示出来。
2、内部1 M晶振,程序采用单任务方式,软件延时。
3、进行此实验请插上JP1的所有8个短路块,JP7(LED_EN)/PC0/PC1短路块。
4、通过此实验,可以I2C总线操作有个初步认识。
*/
1、用24C02记录CPU启动次数,并在PB口上显示出来。
2、内部1 M晶振,程序采用单任务方式,软件延时。
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);
/*延时函数*/
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;/*电平设置*/
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;/*电平设置*/
DDRB = 0xFF;/*方向输出*/
PORTC = 0xFF;
DDRC = 0x00;
PORTD = 0xFF;
DDRD = 0x00;
twi_read(0x08, temp);
PORTB = ~temp;
temp ++;
twi_write(0x08, temp);
while (1) {
;
}
}
评论