嵌入式应用实例 - 图文

发布时间 : 星期五 文章嵌入式应用实例 - 图文更新完毕开始阅读

#include \

#define SCI_BDH(x) (*(vuint8 *)(0x00000038+(x-1)*8)) #define SCI_BDL(x) (*(vuint8 *)(0x00000039+(x-1)*8)) #define SCI_C1(x) (*(vuint8 *)(0x0000003A+(x-1)*8)) #define SCI_C2(x) (*(vuint8 *)(0x0000003B+(x-1)*8)) #define SCI_S1(x) (*(vuint8 *)(0x0000003C+(x-1)*8)) #define SCI_S2(x) (*(vuint8 *)(0x0000003D+(x-1)*8)) #define SCI_C3(x) (*(vuint8 *)(0x0000003E+(x-1)*8)) #define SCI_D(x) (*(vuint8 *)(0x0000003F+(x-1)*8)) #define EnableSCIReInt() SCI1C2 |=(SCI1C2_RIE_MASK) #define DisableSCIReInt() SCI1C2 &=~(SCI1C2_RIE_MASK) #define SCI_NUM_1 1 #define SCI_NUM_2 2

void SCIInit(uint8 SCINo,uint8 sysclk,uint16 baud); void SCISend1(uint8 SCINo,uint8 ch);

void SCISendN(uint8 SCINo,uint16 n,uint8 ch[]); uint8 SCIRe1(uint8 SCINo,uint8 *p);

uint8 SCIReN(uint8 SCINo,uint16 n,uint8 ch[]); void SCISendString(uint8 SCINo,char *p); #endif

SCI.c:

#include \

void SCIInit(uint8 SCINo, uint8 sysclk, uint16 baud) {

uint16 ubgs; ubgs=0; if(SCINo>2) { SCINo=2; }

15

ubgs=sysclk*(10000/(baud/100))/16;

SCI_BDH(SCINo)=(uint8)((ubgs&0xFF00)>>8); SCI_BDL(SCINo)=(uint8)(ubgs&0x00FF); SCI_C1(SCINo)=0b00000000; SCI_C2(SCINo)=0b00001100; }

void SCISend1(uint8 SCINo, uint8 ch) { if(SCINo>2) { SCINo=2; }

while(!(SCI_S1(SCINo)&0b1000000)); SCI_D(SCINo)=ch; }

uint8 SCIRe1(uint8 SCINo, uint8 *p) { uint16 k; uint8 i; if(SCINo>2){ SCINo=2; }

for(k=0;k<0xfbbb;k++)

if((SCI_S1(SCINo)&0b00100000)!=0) { i=SCI_D(SCINo); *p=0x00; break; }

if(k>=0xfbbb) { i=0xff; *p=0x01; } return i;

16

}

void SCISendN(uint8 SCINo, uint16 n, uint8 ch[]) { uint16 i; if(SCINo>2) { SCINo=2; }

for(i=0;i

uint8 SCIReN(uint8 SCINo, uint16 n, uint8 ch[]) { uint16 m; uint8 fp; m=0; if(SCINo>2) { SCINo=2; }

while(m

ch[m]=SCIRe1(SCINo,&fp); if(fp==1) { return 1; } m++; } return 0; }

void SCISendString(uint8 SCINo, char *p) { uint32 k; if(SCINo>2) { SCINo=2; }

17

if(p==0) return; for(k=0;p[k]!='\\0';++k) { SCISend1(SCINo,p[k]); } }

3.1.2 LCD子程序

LCD.h:

#ifndef LCD_H #define LCD_H

#include \#include \#include \#define LCDdata PTAD #define LCDdataD PTADD #define LCDctrl1 PTCD #define LCDctrlD1 PTCDD #define LCDctrl2 PTFD #define LCDctrlD2 PTFDD #define LcdRS 4 #define LcdRW 6 #define LcdE 6 void LCDinit(void);

void LCDcommand(uint8 cmd); void LCDshow(uint8 str[]); #endif

LCD.c:

#include \

18

联系合同范文客服:xxxxx#qq.com(#替换为@)