找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1333|回复: 0
打印 上一主题 下一主题
收起左侧

STC15F2K60S2单片机中断程序错误

[复制链接]
跳转到指定楼层
楼主
ID:767355 发表于 2020-6-4 15:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
需要使用单片机控制舵机往东西两个方向转动,但是在使用中断器进行50us/次中断时出现了错误,将时间设定为一秒一次角度变更。烧录程序后无反应。
  1. #include <STC15.H>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit _PWM = P4^1;
  5. sbit b=P0^4;
  6. sbit x=P0^5;
  7. sbit n=P0^6;
  8. sbit d=P0^7;
  9. uchar count,jd,sj;
  10. void Timer01Init(void);
  11. void DelayMS(uint xms)
  12. {
  13.                 uint i,j;
  14.                 for(i=xms;i>0;i--)
  15.                         for(j=110;j>0;j--);
  16.         }

  17. void main()        
  18. {
  19.         P4M1=0x00;
  20.         P0M0=0x00;
  21.         P4M0=0x02;
  22.         P0M1=0x00;
  23.         Timer01Init();
  24.         while(1)
  25.         {
  26.            
  27.                  if(jd==2)
  28.                  {
  29.                          ET0=0;
  30.                          d=0x00;
  31.                          DelayMS(400);
  32.                          d=0xff;
  33.                          ET0=1;
  34.                  }
  35.                         if(jd==4)
  36.                         {
  37.                                 ET0=0;
  38.                                 x=0x00;
  39.                                 DelayMS(400);
  40.                                 x=0xff;
  41.                                 ET0=1;
  42.                         }
  43.                         
  44.         }
  45. }
  46. void Timer01Init(void)        
  47. {
  48.         AUXR &= 0x7F;
  49.         TMOD &=0xf0;
  50.         TL0 =0xd2;        
  51.         TH0 =0xff;
  52.         TF0=0;
  53.         EA=1;
  54.         ET0=1;   
  55.         TR0 = 1;
  56. }


  57. void TIME0() interrupt 1
  58. {
  59.                 TL0 =0xd2;        
  60.                 TH0 =0xff;
  61.                 sj++;
  62.                 if(sj==2000)
  63.                 {
  64.                         jd++;
  65.                         count=0;
  66.                 }
  67.                 if(count < jd)
  68.                 {
  69.                         _PWM=1;
  70.                 }
  71.                 else
  72.                         _PWM=0;
  73.                 count++;
  74.                 count=count%40;
  75.                 if(jd==6)
  76.                         jd=0;
  77.         }
复制代码



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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