|
我想在串口上显示十进制数,不知怎么改 程序,望大侠指点!
#include<reg52.h> //头文件
#define FOSC 11059200
#define uchar unsigned char
#define uchar unsigned char
sbit key1=P3^2;
uchar num,num1;
uchar m,j;
/**************************************************************************/
//初始化子程序
void Time1_1(void)
{
TH0=(65536-5000)/256;//高位赋初值50毫秒
TL0=(65536-5000)%256;//低位赋初值50毫秒
EA=1;//开总中断
ET0=1;//设置定时器0中断
TMOD = 0x21;//定时器0方式1
TR0=1; //启动Timer0
}
void uart1_Init()//串口初始化
{
TMOD=0x20; //用定时器设置串口波特率 9600
TH1=0xfd;
TL1=0xfd;
SCON=0x50;
TR1=1;
REN=1; //串口初始化
SM0=0;
SM1=1;
EA=1; //开启总中断
ES=1;
}
void delayms(int t)
{
int i;
for(;t>0;t--)
for(i=FOSC/13186;i>0;i--);
}
//--------------------------------------------------
//串口1初始化
//--------------------------------------------------
//
//void uart1_init(int baud,char es)
//{
// char v;
// TMOD&=0x0f;
// TMOD|=0X20; //T1方式2
// v=256-(( FOSC*10/12/32/baud+5)/10);//四舍五入
// TH1=v;
// TL1=v;
// //IOSET(AUXR,BIT(6));//T1x12,让T1的时钟变为原来的12倍,波特率也提高了
// TR1=1;
// SCON=0X50; //0101 0000 方式1,允许接收
// ES=1; //允许串行中断
// //EA =1; //全局中断允许
//}
//--------------------------------------------------
//串口1发送单个字符
//--------------------------------------------------
void uart1_sendbyte(char ud)
{
SBUF=ud;
while(TI==0); //等待它由0变为1
TI=0; //清发送标志
}
void main(void)
{
int i;
uart1_Init();
Time1_1();
while(1)
{
if(num==31)
{
if(!key1)m=j;
i=m;
i++; j++;
num1=1;
if(i==51)i=0;
num=0;
}
if(num1==1)
{
uart1_sendbyte(i);
num1=0;
}
}
}
void uart1_1(void) interrupt 4 //串口中断函数
{
TI=0;
RI=0;
ES=0;
}
void Time1_0(void) interrupt 1 //定时器0中断入口
{
TH0=(65536-50000)/256; //定时50毫秒
TL0=(65536-50000)%256;
TR0=1;
num++;
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|