才开始自学单片机,遇到了问题求助!!!任务是用51单片机做一个脉冲发生器,可以通过按钮和串口通信设置脉冲信号的脉宽,下面是我在网上找的个程序然后自己修改了一部分,用T1作为脉冲信号发生器,T0用来做串口通信,T0和T1都工作在8位自动重载模式下
//晶振:12M T1-计时250微秒溢出中断一次;P1.0, P1.1 为增加、减少键 P2.7输出方波
/*变量的定义:
hz_shu: 设定的频率数
T0_over_num: 根据设定频率计算后的,定时器溢的出次数值
T0_cnt: 定时器计数溢出数
sec_over_num: 计算1s内的计数
*/
#include “reg51.h”
#include “math.h”
sbit pulse_out=P2^7;
//-------------------
unsigned char data hz_shu,second,key_val,key_val_old;
unsigned int data sec_over_num;
unsigned int data T0_cnt,T0_over_num;
typedef unsigned int u16; //对数据类型进行声明定义
typedef unsigned char u8;
void UsartInit()
{
SCON=0X50; //设置为工作方式1
TMOD=0X20; //设置计数器工作方式2
PCON=0X80; //波特率加倍
TH1=0XF3; //计数器初始值设置,注意波特率是4800的
TL1=0XF3;
ES=1; //打开接收中断
EA=1; //打开总中断