?? serial.c
字號:
#include "uCOS_II.H"
#include "serial.h"
SerialBuffer pc_send;
/*--------------------------------------------------------------*/
/* ucOS-II的中斷服務(wù)程序示例 */
/*--------------------------------------------------------------*/
void SerialISR(void) interrupt 4
{
#if OS_CRITICAL_METHOD == 3 // Allocate storage for CPU status register
OS_CPU_SR cpu_sr;
#endif
OSIntEnter(); // Must be called first at every hardware interrupt entry point
OS_ENTER_CRITICAL();
if(TI)
{
TI=0;
pc_send.ptr++;
if (pc_send.ptr < pc_send.count)
SBUF=pc_send.buffer[pc_send.ptr];
}
else if(RI)
{
RI=0;
//處理輸入字符
}
OS_EXIT_CRITICAL();
OSIntExit(); // Must be called finally at every hardware interupt exit point
}
//串口初始化 0xfd=19200,0xfa=9600,0xf4=4800,0xe8=2400,0xd0=1200
void SerialInit(void)
{
TMOD |= 0x20; //定時器0:模式1(16位定時器),僅受TR0控制;定時器1:波特率發(fā)生器
TH1 = 0xFD; //晶振11.0592, 波特率 9600
ET1 = 0;
TR1 = 1; //start timer1
SCON = 0x50;
ES = 1;
//設(shè)置串口收發(fā)的初始值
pc_send.ptr=0;
pc_send.count=0;
}
void SendStr(unsigned char* buffer,int count) OS_REENTRANT
{
if (count > 0)
{
pc_send.buffer=buffer;
pc_send.count=count;
pc_send.ptr=0;
SBUF=buffer[0];
while (pc_send.ptr < pc_send.count); //wait until all char send
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -