找回密码
 立即注册

QQ登录

只需一步,快速开始

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

15f2k60s2单片机的控速程序问题

[复制链接]
跳转到指定楼层
楼主
ID:405091 发表于 2018-10-6 11:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
写的程序在15上不能用 帮看一下

/**************************************/
#include <REGX51.H>
sbit M1A=P0^0;
sbit M1B=P0^1;
sbit M2A=P0^2;
sbit M2B=P0^3;

sbit ENA0=P1^4;
sbit ENA1=P1^5;

char R,S;

void main()
{  
   M1A=1;         
   M1B=0;                                   
   M2A=1;                                   
   M2B=0;

   ENA0=1;
   ENA1=1;


  TMOD=0x01;
  TH0=64536/256;
  TL0=64536%256;
  ET0=1;
  EA=1;
  TR0=1;
  R=8;
  R--;
  while(1);
}

void sudu() interrupt 1
{
TH0=64536/256;
TL0=64536%256;
if(R==1)
{
  ENA0=~ENA0;
  ENA1=~ENA1;
  if(ENA0==1)
  {R=4;}
   else{R=8;}
}                                                        

}

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

使用道具 举报

沙发
ID:387733 发表于 2018-10-6 13:13 | 只看该作者
不是15的原因,程序本身就有问题。
初始化的时候 R=8;R--;R 的值应该是 7;而在定时器中断里面只有 R=4; R=8;两次赋值与一次 R==1 的判断,运行中 R是不可能等于 1 的。
逻辑上判断,应该是语句 R--;放错了位置,应该放在定时器中断内。
回复

使用道具 举报

板凳
ID:405091 发表于 2018-10-6 16:33 | 只看该作者
sxhwdz 发表于 2018-10-6 13:13
不是15的原因,程序本身就有问题。
初始化的时候 R=8;R--;R 的值应该是 7;而在定时器中断里面只有 R=4 ...

是的是的,我这个循环逻辑写错了。
TMOD=0x01;
  TH0=64536/256;
  TL0=64536%256;
  ET0=1;
  EA=1;
  TR0=1;
请问这几句也可以打开15f2k60s2的内部定时器和中断吗?
15也能用51的头文件吧
回复

使用道具 举报

地板
ID:387733 发表于 2018-10-7 11:29 | 只看该作者
ET0=1 打开了定时器0的中断,EA=1 是打开系统的总中断开关,TR0=1 定时器0开始计数,这些条件满足,定时器开始工作,并能产生中断。

15系列的功能更多,使用了更多的特殊功能寄存器,如果要使用这些功能,就需要15的头文件对这些寄存器进行定义。如果只使用普通的功能,用51的头文件也可以的。
回复

使用道具 举报

5#
ID:406159 发表于 2018-10-7 16:06 | 只看该作者
TMOD=0x01;
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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