剛剛那一篇發表的是程式庫,這一篇發表的是頭文件和應用程式。
理論上來說啦,我比較想用UART中斷來做,但如果用了中斷,就沒有辦法使用stdio.h的函數。所以只好用輪詢的方式,
再沒有更好的選擇之前,我也只能將就著用著了。
基於我個人的美感,這個程式有個問題。
我不知道該怎麼清除畫面,當在輸入第二次的時候,在終端機顯示的時候,並不會跳到第一行第一列,而是往下增加。
這不是很嚴重的BUG,只是我個人的美感不能接受而已。
不過,話說回來了……
不過就是MCU的程式,在終端機監控部份的UI這麼在意做什麼?
……
我還是不太能接受……
timerAPI.h
/************************************************************************************************/
/*
本程式依照創用CC規範,也就是說,愛怎麼用就怎麼用,就算拿去賺錢,只要別讓我知道就好。
設計者:Ethan
設計日期:2012/5/5
程式功能:使用計時器,做出一個週期為兩秒的方波
*/
#ifndef __timerAPI_H__
#define __timerAPI_H__
//程式功能:內部計時,TR啟動,
//DelayX1msTimer1Mode0 == Timer1,Mode0 1ms延遲產生程式;
extern void DelayX1msTimer0Mode0(unsigned int count);
//程式功能:內部計時,TR啟動,
//DelayX1msTimer0Mode0 == Timer0,mode0 1ms延遲產生程式;
extern void DelayX1msTimer0Mode1(unsigned int count);
//程式功能:內部計時,TR啟動,
//DelayX1msTimer0Mode0 == Timer0,mode0 1ms延遲產生程式;
extern void DelayX1msTimer1Mode1(unsigned int count);
//程式功能:內部計時,TR啟動,
//DelayX1msTimer1Mode0 == Timer1,Mode1 1ms延遲產生程式;
extern void DelayX1msTimer1Mode0(unsigned int count);
//程式功能:內部計時,TR啟動,溢位自動載入
//DelayX1msTimer2 == Timer0,mode0 1ms延遲產生程式;
//8052專屬程式,當需要使用這個函數的時候,請記得加上
//『#define AT8052』這一行指令
#ifdef AT8052
extern void DelayX1msTimer2(unsigned int count);
#endif
#endif
main.c
/************************************************************************************************/
#include
#include
#include
#include"timer\timerAPI.h"
//#include"time\DelayX1msTimer0Mode1.c"
//char uart_data;
extern void Timer2InterupUART(void);
//extern void DelayX1msTimer0Mode1(unsigned int count);
void main (void){
char input;
char *c_input;
char page2;
// TMOD = 0x01;
Timer2InterupUART();
P1 =0x00;
TI=1;
printf("\n");
printf("*******Welcome*******\n");
printf("Select function:\n");
printf("a. port0 on \n");
printf("b. port1 on \n");
printf("c. port3 on \n");
printf("d. next page \n");
scanf("%c",&input);
printf("\n",input);
printf("*******Power cycle*******\n");
printf("a. port0 on 100ms , off 5s \n");
scanf("%c",&page2);
printf("\n",page2);
//scanf("%s",&c_input);
//printf("\n %s",page2);
while(RI==0){
switch(input){
case 'a':
//11111110
//P1=0xFE;
//00000001
P1=0x01;
break;
case 'b':
//11111101
//P1=0xFD;
//00000010
P1=0x02;
break;
case 'c':
//11110111
//P1_3=0xF7;
//00001000
P1=0x08;
break;
}
switch(page2){
case 'a':
P1=0x01;
DelayX1msTimer0Mode1(5000);
P1=0x00;
DelayX1msTimer0Mode1(50000);
break;
}
} // endless
}
沒有留言:
張貼留言