📄 iotxd.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 + -