51单片机外部脉冲计数问题

2019-07-15 09:21发布

  1. sbit IN1 = P1^3;
  2. sbit IN2 = P1^4;
  3. sbit IN3 = P1^5;
  4. sbit IN4 = P1^6;
  5. sbit rm = P3^4;         //右边码盘计数 T0
  6. sbit lm = P3^5;         //左边码盘计数 T1

  7. void Down()
  8. {
  9.     IN1 = 0;
  10.     IN2 = 0;
  11.     IN3 = 0;
  12.     IN4 = 0;   
  13. }

  14. void RTurn90()         //右转90度
  15. {   
  16.     IN1 = 0;
  17.     IN2 = 0;
  18.     IN3 = 1;
  19.     IN4 = 0;
  20. }

  21. void Inittimer()
  22. {
  23.     TMOD = 0x66;      //T0、T1作8位自动重装载计数器
  24.     EA = 1;           //开总中断
  25.     ET0 = 1;          //开中断T0
  26.     ET1 = 1;          //开中断T1
  27.     TH0 = 238;        //赋初值,计数码盘转过18格
  28.     TL0 = 238;
  29.     TH1 = 238;
  30.     TL1 = 238;
  31. }

  32. void main()
  33. {
  34.     InitTimer();
  35.     TR1 = 1;          //开T1计数器
  36.     while(1)
  37.     {
  38.     RTurn90();
  39.      }        
  40. }

  41. void int3() interrupt 3           //中断T1(左边)计数满18格
  42. {
  43.     TR1 = 0;
  44.     Down();
  45. }
复制代码各位大佬,请问下,我想通过T1计数外部脉冲,可是没法触发中断,这是为什么啊
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
yy2qy
1楼-- · 2019-07-16 23:06
 精彩回答 2  元偷偷看……
战胜心魔
2楼-- · 2019-07-17 03:53
那就这么写吧检测中断触发 定义一个变量变量加加 到18格停
yy2qy
3楼-- · 2019-07-17 06:10
战胜心魔 发表于 2017-11-13 21:29
那就这么写吧检测中断触发 定义一个变量变量加加 到18格停

中断都没触发,要怎么检测?
战胜心魔
4楼-- · 2019-07-17 10:05
认真看看TMOD  IE的值 错了没 吧初值放到main里去
yy2qy
5楼-- · 2019-07-17 12:58
战胜心魔 发表于 2017-11-13 21:40
认真看看TMOD  IE的值 错了没 吧初值放到main里去

TMOD是T1、T0为计数器,模式2,01100110B=0x66,中断允许有EA,ET1,ET2,还有计数器开关TR1,TR0,都有设置,应该是没错啊

一周热门 更多>