注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
嵌入式追溯者的个人空间 https://home.eeworld.com.cn/space-uid-699229.html [收藏] [复制] [分享] [RSS]
日志

为什么这个C程序不可以在开发板上定时鸣叫!!!

已有 1050 次阅读2016-5-22 22:25 |个人分类:我喊我无奈| include, 程序, 开发

#include "reg51.h"       //包含头文件
//#include "mingjiao.h"
sbit LE1=P2^0;           //位选573锁存器使能
sbit LE2=P2^1;           //段选573锁存器使能
sbit bz=P3^7;
#define uchar unsigned char
#define uint  unsigned int
 
uchar temp,num;          //定义变量
//**************************************************************************************************
delay(uint time)              //int型数据为16位,所以最大值为65535           
 {
  uint  i,j;                  //定义变量i,j,用于循环语句
  for(i=0;i<time;i++)         //for循环,循环50*time次
     for(j=0;j<50;j++);       //for循环,循环
   }
//定时器中断子程序
//**************************************************************************************************
t0() interrupt 1 using 1
{
  TH0=0x3c;         //重置定时器初值
  TL0=0xb0;
  if(temp>=19)      //满20次,即20次*50ms=1s
   {
     temp=0x00;     //重置temp为0
     //num++;         //显示变化一次
     bz=1;
 delay(100);  //mingjiao();
  //P1=~num;       //将变化次数放在P1控制的LED上显示
   }
  else
   {
     temp++;        //每进一次中断,temp加1
   }
}
//**************************************************************************************************
//主函数
//**************************************************************************************************
main()
{
   TMOD=0x01;    //0b00000001  用的是定时器0,工作在方式1(16位寄存器)
                 //要实现定时50ms,(65536-T0)x12/12000000=0.05s得T0=15536即0x3cb0
   TH0=0x3c;     //装定时器初值高8位
   TL0=0xb0;     //装定时器初值低8位
   TR0=1;        //启动定时器0
   ET0=1;        //开定时器0中断
   EA=1;         //开总中断
   while(1);     //死循环,等待定时器中断
}
全部作者的其他最新日志
评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章