📄 9600.c
字号:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include "delay.h"
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define CHKBIT(x,y) (x&(1<<y)) //check bit y in byte x
volatile uchar rxd;
volatile ulong i,l;
volatile uchar flag;
volatile uchar k1,k2,k3;
volatile uchar t[400]={0};
volatile uint d;
void send0(uchar c)
{
// UCSR0B = 0x48; //关串口接受
while( !(UCSR0A & (1<<UDRE0)) ); //等待置位
UDR0=c; //c数放入UDR缓冲区发送
}
/*
SIGNAL(SIG_UART0_RECV)
{
rxd = UDR0;
send0(rxd);
}*/
/*
SIGNAL(SIG_UART1_RECV)
{
rxd = UDR1;
send0(rxd);
}*/
void port_init(void)
{
PORTD = 0xFF;
DDRD = 0x00;
}
//定时T1初始化
void timer1_init(void)
{
TCCR1B = 0x00; //停止定时器
TIMSK|= 0x04; //中断允许
TCNT1H = 0xfd;
TCNT1L = 0x0f; //初始值
TCCR1A = 0x00;
// TCCR1B = 0x02; //启动定时器
}
SIGNAL(SIG_OVERFLOW1)
{
TCNT1L = 0x0f; //初始值
TCNT1H = 0xfd;
i++;
}
void USART_Init(void)
{
cli(); //禁止所有中断
// MCUCR = 0x00;
// MCUCSR = 0x80; //禁止JTAG
// GICR = 0x00;
// DDRE|=(1<<TXD0);
// DDRE&=~(1<<RXD0);
UCSR0B|=(1<<TXEN0);//(1<<RXEN0)||(1<<RXCIE0);//允许接受,允许发送,开接受中断
UCSR0C|=(1<<UCSZ01)|(1<<UCSZ00);//8位数据,1位停止位
UBRR0L=11; //baund 8m 51-9600 12-384000 7,3728m 11-384000
UBRR0H=0;
// DDRD|=(1<<TXD1);
//DDRD&=~(1<<RXD1);
/*
UCSR1B|=(1<<RXEN1)|(1<<RXCIE1);;//|(1<<TXEN1); //|(1<<RXCIE1);//允许接受,允许发送,开接受中断
UCSR1C|=(1<<UCSZ11)|(1<<UCSZ10);//8位数据,1位停止位
UCSR1A = 0x02;
// UBRR1L=0x57; //7,3728m 10400bps
UBRR1L=0x5f; //7,3728m 9600bps
UBRR1H=0;
*/
sei(); //开总中断
}
int main()
{ uchar u;
port_init();
USART_Init();
timer1_init();
for(k1=0;k1<200;k1++)
{
for(k2=0;k2<200;k2++)
;
}
d=0;
while(CHKBIT(PIND,2));
u=CHKBIT(PIND,2);
TCCR1B = 0x01;
flag=1;
while(1)
{
/*
if(CHKBIT(PIND,2))
{
TCCR1B=0;
send0(i>>24);
send0(i>>16);
send0(i>>8);
send0(i);
send0(TCNT1H);
send0(TCNT1L);
}*/
while(!(u^CHKBIT(PIND,2)));
u=CHKBIT(PIND,2);
t[d]=i>>24;
d++;
t[d]=i>>16;
d++;
t[d]=i>>8;
d++;
t[d]=i;
d++;
i=0;
if(d>399)
{
TCCR1B=0;
flag=1;
for(d=0;d<400;d++)
send0(t[d]);
d=0;
while(1);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -