找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4050|回复: 0
收起左侧

大家好,我C51有一个源程序编译能通过,可下载后不能运行。请高手给指点为盼

[复制链接]
ID:37185 发表于 2012-3-27 11:17 | 显示全部楼层 |阅读模式

/**1位数码管上先显示零,按下SW0键(外中断1)蜂鸣器发出"答"的一声,数码管递增加数,
到9回零;按下SW1键(外中断0)蜂鸣器发出"笛"的一声,数码管递减减数,到0回9,用外中
断和定时器编程实现?***********/


#include"stc.h"/*包含STC单片机头文件*/
#include"top51.h"/*包含TOP51开发板头文件*/
#include"delay.h"/*包含爱晶电子提供延时函数头文件*/
//#include "buzzer.h"/*爱晶电子提供的蜂鸣器头文件*/

sbit sw0=P3^3;
sbit sw1=P3^2;

/*0-F共阴字形码表*/
uchar code sz[17]={0x3f  , 0x06 , 0x5b , 0x4f , 0x66 ,
   0x6d ,0x7d , 0x07 , 0x7f  , 0x6f , 0x77 , 0x7c ,
   0x39 , 0x5e , 0x79 , 0x71 , 0x00};

uchar num,tt0,i;/*局部变量定义*/
void main()/*主函数*/
{
   top51_init();/*TOP51开发板初始化*/
 COL0=1;/*选中4位数码管的最右边一位,并使SW0-SW2可作为独立按键使用*/

 IT1=1;/*设定外部中断触发方式:IT1=0为低电平触发;IT1=1为下降沿触发*/
 IT0=1;/*设定外部中断触发方式:IT0=0为低电平触发;IT1=0为下降沿触发*/
 PX0=1;/*设定中断0优先级高优先级*/
    PX1=1;/*使能中断1也为高优先级*/
 PT0=0;/*使能T0为低优先级*/

 TMOD=0X01;//置T0的工作模式01
 TH0=(65536-50000)/256;
 TL0=(65536-50000)%256;
   EX0=1;//开INT0禁止、允许位
 EX1=1;//开INT1禁止、允许位
 ET0=1;//开T0禁止、允许位
 EA=1;//开全局中断
 //TR0=1;

 while(1)
 {
    if (SW0==0)
     {
        //TR0=1;//delay20ms();
          while(sw1==1)
   {
     
        num++;
        if(num>9) num=0;
   }
    }
     
  if(sw1==0)
  {
     //TR0=1;//delay20ms();
   while(sw0==1)
   {
      
       num--;
       if(num<1) num=9;
   }
  }
    P0=sz[num]; 
 }
 
}

 


void timer0_routine() interrupt 1
{
    TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;
  tt0++;
  if(tt0==20) tt0=0;
}


/*---高优先级中断服务程序---*/
void int1_routine() interrupt 2
{
   TR0=1;
   for(i=50;i>0;i--)
   {
       BZ=1;//蜂鸣器发出答的一声桑?
       delay500us();
       BZ=0;
       delay500us();
   }
}

/*---高优先级中断服务程序---*/
void init0_routine() interrupt 0
{
   TR0=1;
 for(i=50;i>0;i--)
    {
       BZ=1;//蜂鸣器发出嘀的一声,
       delayms(1);
       BZ=0;
       delayms(1);
    }
}

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表