我試圖用AVR代碼編寫Arduino Uno,因爲我不允許在9月份開始的高級項目中使用Arduino庫。我找到了數據表,得到了數字引腳的工作,然後繼續嘗試通過USB串行連接與我的計算機通信。我已經完整閱讀了本手冊的第19章(1),而且我仍然迷失了方向。我複製並粘貼庫文檔本身和數據表中的代碼,但它仍然表示事情未解決和/或未找到。任何幫助表示讚賞。解讀Atmega328p數據表
代碼:
#include <stdio.h>
#include <avr/io.h>
#include <util/delay.h>
#include <util/setbaud.h>
#define analog1 PC0
#define LED PB5
#define BAUD 9600
//#define F_CPU 16000000
void init_io(){
DDRB |= (1<<LED);
DDRC |= (0<<analog1);
}
static void
uart_9600(void)
{
UBRRH = UBRRH_VALUE;
UBRRL = UBRRL_VALUE;
#if USE_2X
UCSRA |= (1 << U2X);
#else
UCSRA &= ~(1 << U2X);
#endif
}
void USART_Transmit(unsigned char data)
{
/* Wait for empty transmit buffer */
while (!(UCSRnA & (1<<UDREn)))
;
/* Put data into buffer, sends the data */
UDRn= data;
}
int main(){
int analog_value = 1000;
while(1){
//analog_value = PINC;
if(analog_value > 500){
PORTB |= (1<<LED);
_delay_ms(500);
PORTB &= ~(1<<LED);
_delay_ms(500);
putchar(analog_value);
}
}
}
非常感謝!
提供有關您不瞭解或不工作的更多詳細信息。 –
通常'n'表示你的端口號。所以如果你使用'USART0',那麼使用'UCSR0A','UDRE0'和'UDR0 = data'。不過,你還沒有明確說明你需要什麼幫助。你能否詳細說明這個問題? – nonsensickle
類似地,你實際上並沒有在你的'main'函數中傳輸任何東西......傳輸是否發生在中斷上? – nonsensickle