?? 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 + -