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

📄 main.c

📁 avr单片机atmage16驱动小灯的一些例程 并且包括一些收发数据的程序利用usb口
💻 C
字号:
/*
实验十三:

	AVR单片机I2C总线实验。
	1、用24C02记录CPU启动次数,并在PB口上显示出来。
	2、内部1 M晶振,程序采用单任务方式,软件延时。
	3、进行此实验请插上JP1的所有8个短路块,JP7(LED_EN)/PC0/PC1短路块。
	4、通过此实验,可以I2C总线操作有个初步认识。
	
	AVR  mega16学习板
	www.iccavr.com
	14:42 2007-4-9
*/

#include "iom16v.h"
#include "beep.h"
#include "delay.h"
#include "ds1302.h"
#include "spi.h"
#include "twi.h"
#include "uart.h"

void main(void) {

	unsigned char temp;

	PORTA = 0xFF;				/*打开上拉*/
	DDRA = 0x00;				/*方向输入*/
	PORTB = 0xFF;				/*电平设置*/
	DDRB = 0xFF;				/*方向输出*/
	PORTC = 0xFF;
	DDRC = 0x00;
	PORTD = 0xFF;
	DDRD = 0x20;

	/*蜂鸣器测验试*/
	delay_ms(100);
	beep(300);

	/*按键及指示灯测试*/
	delay_ms(1000);
	while (1) {
		temp = PINA;					/*提取按键*/
		if (temp != 0xFF) {
			PORTB = temp;				/*显示按键值*/
			beep(200);
			while (PINA != 0xFF);		/*等待按键松开*/
			}
		if ((PIND & 0x04) == 0x00) {	/*INT键退出*/
			break;
			}
		}

	/*SPI总线HC595芯片测试*/
	PORTB = 0xEF;
	delay_ms(3000);
	SPI_MasterInit();					/*初始SPI接口*/
	PORTB = 0xF0;						/*打开4位数码管*/
	for (temp = 0; temp < 10; temp ++) {
		SPI_595_Out(disp[temp]);		/*显示数据输出*/
		delay_ms(500);
		}
	SPCR = 0x00;						/*关闭SPI接口*/
	
	/*IIC总线24C02芯片测试*/
	PORTB = 0xDF;
	delay_ms(3000);
	twi_write(0x08, 0x55);				/*写入标志*/
	delay_ms(10);
	twi_read(0x08, &temp);				/*读出标志*/
	delay_ms(500);
	if (temp == 0x55) {					/*校验标志*/
		beep(300);
		}
	else {
		beep(1500);
		}

	/*DS302芯片测试*/
	PORTB = 0xBF;
	delay_ms(1000);
	ds1302_init();						/*初始化DS302*/
	time_buf[5] = 0x55;
	time_buf[6] = 0x00;
	ds1302_write_time();				/*写入标志*/
	delay_ms(2000);
	ds1302_read_time();					/*读出标志*/
	if ((time_buf[5] == 0x55) && (time_buf[6] != 0x00)) {/*校验标志*/
		beep(300);
		}
	else {
		beep(1500);
		}

	/*串口测试*/
	PORTB = 0xF7;
	delay_ms(3000);
	Uart_Init();
	while (1) {
		temp = Uart_Receive();		/*等待接收数据*/
		PORTB = ~temp;				/*显示低电平有效*/
		Uart_Transmit(temp);		/*发送收到的数据*/
		}
}

⌨️ 快捷键说明

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