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

📄 iotxd.c

📁 模拟串口的通讯程序
💻 C
字号:
#include <avr/io.h>
#include <avr/delay.h>
#define TXD_H sbi(PORTE,6)
#define TXD_L cbi(PORTE,6)
#define TXD   sbi(DDRE,6)
void delay_ms(uint16_t ms) 
{ 
   uint16_t  i;   
   for(i=0;i<ms;i++ ) 
    { 
      _delay_loop_2((uint16_t)(250*14.7456));   //16-bit count, 4 cycles/loop  
    }                                               //8MHz/8000=1ms 8000/4=2000=1ms    
}
void io_uart_TXD(uint8_t data)
{
	uint8_t i=0;
	//TXD;
	TXD_L;
	_delay_loop_2(371);
	for(i=0;i<8;i++)
	{
		if(data&0x01)
			TXD_H;
		else
			TXD_L;
		_delay_loop_2(371);
		data=data>>1;
	}
	TXD_H;
	_delay_loop_2(371);
}
int main(void)
{
	uint8_t i;
	uint16_t TIME_COUNT;
	uint8_t time_high,time_low;
	TXD;
	TXD_H;
	/*delay_ms(3000);
	
	//变量定义
//选择快速PWM模式
	TCCR1B|=(1<<WGM12)|(1<<WGM13);
	TCCR1A|=3<<WGM10;

	//预分频1
	TCCR1B&=0xF8;//11111 000
	TCCR1B|=0x01;//00000 011
	OCR1A=0xfff0;
	//OCR1A=0x2880;
	_delay_loop_2(371);
	//将预分频置0,终止定时器
	TCCR1B&=0xF8;//1111 1000
	TIME_COUNT=TCNT1;
	time_high=TIME_COUNT/256;
	time_low=TIME_COUNT%256;
	//while(1);
	delay_ms(1000);
	io_uart_TXD(0x53);
	delay_ms(1000);
	io_uart_TXD(0x54);
	delay_ms(1000);
	io_uart_TXD(0x55);
	delay_ms(1000);
	io_uart_TXD(time_high);
	delay_ms(1000);
	io_uart_TXD(time_low);
	delay_ms(1000);*/
	io_uart_TXD(0x51);
	io_uart_TXD(0x52);
	io_uart_TXD(0x33);
	io_uart_TXD(0x54);
	io_uart_TXD(0x55);
	io_uart_TXD(0x34);
	io_uart_TXD(0x35);
	io_uart_TXD(0x56);
	io_uart_TXD(0x37);	
	for(i=0;;i++)
	{
		io_uart_TXD(i);
		if(i==0xff)
		break;
		//delay_ms(1000);
	}
	for(i=0;;i++)
	{
		io_uart_TXD(i);
		if(i==0xff)
		break;
		//delay_ms(1000);
	}
	for(i=0;;i++)
	{
		io_uart_TXD(i);
		if(i==0xff)
		break;
		//delay_ms(1000);
	}
	while(1);
}

⌨️ 快捷键说明

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