|
发表于 2015-10-22 10:05:53
|
显示全部楼层
本帖最后由 lcw_swust 于 2015-10-22 10:07 编辑
其实手册里也讲得很清楚了
- typedef unsigned char U8;
- typedef signed char S8;
- typedef unsigned int U16;
- typedef signed int S16;
- typedef unsigned long U32;
- typedef signed long S32;
- //--------------------------------------------------
- // 宏定义
- //--------------------------------------------------
- #undef BIT
- #define BIT(x) (1<<(x))
- //IOSET(PORTB,BIT(0));//将端口在X为1的位置1
- #define IOSET(port,x) (port)|=(x)
- //IOCLR(PORTB,BIT(0));//将端口在X为1的位清0
- #define IOCLR(port,x) (port)&=~(x)
- //IOCLR(PORTB,BIT(0));//将端口在X为1的位取反
- #define IOXOR(port,x) (port)^=(x)
- //系统时钟定义,用于计算波特率
- #define FOSC 24000000
- //串口初始化
- void uart1_init(U32 baud,U8 es)
- {
- U16 v;
- IOSET(AUXR,BIT(2));//T2x12
- v=65536-((FOSC*2/4/baud+1)/2);//(*2+1)/2 四舍五入
- //IOCLR(AUXR,BIT(4));//T2R=0;
- T2H=v>>8;
- T2L=v;
- IOSET(AUXR,BIT(4));//T2R=1;
- IOSET(AUXR,BIT(0));//S1ST2=1;选择T2作为波特率
- SCON=0X50; //0101 0000 方式1,允许接收
- ES =es; //允许串行中断
- }
复制代码 |
|