欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: UART接口控制LED燈 [打印本頁]

作者: xuwei    時間: 2015-6-13 23:29
標題: UART接口控制LED燈
                                                                                                  1、串口以查詢方式接收數據,并分別將數據顯示的PB口和返回。
2、內部1 M晶振,程序采用單任務方式,軟件延時。
3、進行此實驗請插上JP1的所有8個短路塊,JP7(LED_EN)短路塊。
4、通過此實驗,可以對串口通信有個初步認識。
    5、從JATG上拔下線,連載COM1口上,也就是AVRISP 的COM2口邊上那個,具體可看說明書
AVR  mega16學習板

*/
#include "iom16v.h"
#include "macros.h"
/*串口初始化函數*/
void Uart_Init(void) {
UCSRA = 0x02;  /*倍速*/
UCSRB = 0x18;  /*允許接收和發送*/
UCSRC = 0x06;  /*8位數據*/
UBRRH = 0x00;
UBRRL = 12;  /*9600*/
}
/*數據發送,查詢方式*/
void Uart_Transmit(unsigned char i) {
while (!(UCSRA & (1<<UDRE)));  /* 等待發送緩沖器為空*/
UDR = i;    /* 發送數據*/
//while(!(USR&0x20));
/* start transmittion many datas */
while(!(UCSRA&0x40));/*判斷TXC是否發完*/
UCSRA|=0x40;//關TXC

}
/*數據接收,查詢方式*/
unsigned char Uart_Receive( void ) {
while (!(UCSRA & (1<<RXC)));  /* 等待接收數據*/
return UDR;    /* 獲取并返回數據*/
}
/*延時函數*/
void delay_ms(unsigned char i) {
unsigned char a, b;
for (a = 1; a < i; a++) {
  for (b = 1; b; b++) {
   ;
   }
  }
}
/*主函數*/
void main(void) {
unsigned char temp;
DDRA = 0x00;    /*方向輸入*/
PORTA = 0xFF;    /*打開上拉*/
DDRB = 0xFF;    /*方向輸出*/
PORTB = 0xFF;    /*電平設置*/
DDRC = 0x00;
PORTC = 0xFF;
DDRD = 0x02;
PORTD = 0xFF;  
Uart_Init();
   SEI();                         //允許全局中斷   

while(1) {
   
  temp = Uart_Receive();  /*等待接收數據*/
  
  if  (temp== 0x6E )    // n
  {PORTB = 0xfe; }    /*顯示低電平有效*/
  if (temp== 0x66)    //f 利用scomv21串口助手 發送f 后得到十六進制數0x66
    {PORTB = 0xff;}
     
  if  (temp== 0x65 )    // e
  {PORTB = 0xfd; }    /*顯示低電平有效*/
   
  Uart_Transmit(temp);  /*發送收到的數據*/
  }
}






歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1