?? test.c
字號:
/*
e Y8b Y8b YV1.08P888 88e
d8b Y8b Y8b Y888P 888 888D
d888b Y8b Y8b Y8P 888 88"
d888WuHan8b Y8b Y 888 b,
d8888888b Y8b Y8P 888 88b,
8888 8888 ,e, 888
8888 888820078e " Y8b Y888P ,e e, 888,8, dP"Y ,"Y88b888
8888 8888888 88b888 Y8b Y8P d88 88b888 " C88b "8" 888888
8888 8888888 888888 Y8b " 888 ,888 Y88D,ee 888888
'Y88 88P'888 888888 Y8P "YeeP"888 d,dP "88 888888
888 88b, d8 888 888
888 88P' e88 88e e88 88e d88 888 e88 88e ,"Y88b e88 888 ,e e, 888,8,
888 8K d888 888bd888 8Shaoziyang88d888 888b"8" 888d888 888d88 88b888 "
888 88b,Y888 888PY888 888P 888 888Y888 888P,ee 888Y888 888888 ,888
888 88P' "88 88" "88 88" 888 888 "88 88" "88 888 "88 888 "YeeP"888
___ ___
___ / /\ / /\ ___
/__/\ / /::\ / /::\ /__/\
\ \:\ / /:/\:\ /__/:/\:\ \ \:\
\__\:\ / /::\ \:\ _\_ \:\ \:\ \__\:\
/ /::\ /__/:/\:\ \:\ /__/\ \:\ \:\ / /::\
/ /:/\:\ \ \:\ \:\_\/ \ \:\ \:\_\/ / /:/\:\
/ /:/__\/ \ \:\ \:\ \ \:\_\:\ / /:/__\/
/__/:/ \ \:\_\/ \ \:\/:/ /__/:/
\__\/ \ \:\ \ \::/ \__\/
\__\/ \__\/
Project: AVR Universal BootLoader Test
AVR 通用 Bootloader 測試
File: test.c
定時向串口輸出一個字符(默認是'>')。如果接收到字符,則將接收的
字符作為輸出。收到'~'時進入死循環,等待看門狗復位。這個程序用
于測試串口通信是否正常。可以使用超級終端作為上位機的軟件。
Version: 2.0
Compiler: WinAVR 20071221 + AVR Studio 4.14.589
Author: Shaoziyang
Shaoziyang@gmail.com
http://avrubd.googlepages.com
http://groups.google.com/group/avrub?hl=en
Date: 2008.4
*/
#include "testcfg.h"
#include "bootldr.h"
#define PROG_START 0x0000
unsigned char dat = '>';
//寫入數據到串口
void WriteCom(unsigned char dat)
{
#if RS485
RS485Enable();
#endif
UDRREG(COMPORTNo) = dat;
while(!(UCSRAREG(COMPORTNo) & (1<<TXCBIT(COMPORTNo))));
UCSRAREG(COMPORTNo) |= (1 << TXCBIT(COMPORTNo));
#if RS485
RS485Disable();
#endif
}
int main()
{
asm volatile("cli": : );
#if WDG_En
//允許看門狗
wdt_enable(WDTO_1S);
#endif
ComInit();
TimerInit();
#if RS485
DDRREG(RS485PORT) |= (1 << RS485TXEn);
RS485Disable();
#endif
#if LED_En
//設置LED端口為輸出狀態
DDRREG(LEDPORT) |= (1 << LEDPORTNo);
#endif
while(1)
{
#if WDG_En
//清除看門狗
wdt_reset();
#endif
if(TIFRREG & (1<<OCF1A)) //T1溢出
{
TIFRREG |= (1 << OCF1A);
#if LED_En
//改變LED狀態
LEDAlt();
#endif
if(DataInCom())
{
dat = ReadCom();
if(dat == '~')
#if WDG_En
while(1); //死循環,等待復位
#else
(*((void(*)(void))PROG_START))(); //跳轉到開始
#endif
}
WriteCom(dat);
}
}
}
//End of file: test.c
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -