📄 main._c
字号:
#include <iom128v.h>
#include <macros.h>
#define fosc 8000000 //晶振8MHZ
#define baud 9600 //与指纹头通讯的波特率
#define FrameCount 10
#define uint unsigned int
#define uchar unsigned char
#define Set485Rec PORTG |= (1<<2)
#define Set485Send PORTG &= ~(1<<2)
uchar RecComm[10];
uchar SendComm[10];
uchar RecCount=0;
void Delay(uint time)
{
uint m,n;
for(n=0;n<time;n++)
{
for(m=0;m<256;m++);
}
}
void Com0Init(void) //串口通讯初始化程序
{
UCSR0B = 0x00; //设置波特率时关闭发送和接收
UCSR0A = 0x00;
UBRR0L=(fosc/16/(baud+1))%256;
UBRR0H=(fosc/16/(baud+1))/256;
UCSR0C=(1<<UCSZ01)|(1<<UCSZ00); //8位数据+1位STOP位
UCSR0B=(1<<RXEN0)|(1<<TXEN0)|(1<<RXCIE0); //允许发送和接收
//UCSR0B=(1<<RXEN0)|(1<<TXEN0);
}
#pragma interrupt_handler uart0_rx_isr:iv_USART0_RXC
void uart0_rx_isr()
{
while(!(UCSR0A & (1<<RXC0)));
asm("WDR");
RecComm[RecCount] = UDR0;
RecCount++;
if(RecCount >= FrameCount) RecCount = 0;
}
void SendFrame0(uchar *Frame,uchar CountFrame)
{
uchar *pTem,m;
pTem = Frame;
Set485Send;
for(m=0;m<CountFrame;m++)
{
asm("WDR");
while (!(UCSR0A & (1<<UDRE0)));
asm("WDR");
UDR0 = *pTem;
pTem++;
}
Set485Rec;
Delay(100);
}
void main(void)
{
uchar m;
for(m=0;m<10;m++)
{
SendComm[m]=0x30+m;
}
DDRG |= (1<<2);
SEI();
Com0Init();
SendFrame0(SendComm,10);
for(;;)
{
;;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -