永发信息网

51单片机使用T0和T1外部脉冲计数,C语言如何编程?

答案:4  悬赏:40  手机版
解决时间 2021-03-15 11:57
51单片机使用T0和T1外部脉冲计数,C语言如何编程?
最佳答案
1、使用T0和T1外部脉冲计数,控制两个电机,到1700个脉冲电机停止,
--统计脉冲个数,用外部中断更好。
--T0和T1,留着定时用。
用四个按键控制,按键1控制电机正转,按键2控制电机反转,按键3控制电机1正转,按键4控制电机2正转。


2、例程:
#include 
sbit k1 = ?; //自己定义
sbit k2 = ?
sbit k3 = ?
sbit k4 = ?
sbit DIAN1 = ?
sbit DIAN2 = ?
sbit DIAN3 = ?
sbit DIAN4 = ?
sbit SEN1 = ? 
sbit SEN2 = ?
void delay(unsigned int x)
{
 unsigned int m, n; 
 for(m = x; m > 0; m--) for(n = 115; n > 0; n--);
}
void main(void)

 TMOD = 0x55;
 IE = 0x8a;
 while(1) {
 if (!k1) {
 delay(10);
 if (!k1) {
 while(!k1);
 TH0 = (65536 - 1700) / 256;
 TL0 = (65536 - 1700) % 256;
 SEN1 = 0;
 DIAN1 = 0; DIAN2 = 1;
 SEN1 = 1; 
 TR0 = 1;
 }
 }
 if (!k2) {
 delay(10);
 if (!k2) {
 while(!k2);
 TH0 = (65536 - 1700) / 256;
 TL0 = (65536 - 1700) % 256;
 SEN1 = 0;
 DIAN1 = 1; DIAN2 = 0;
 SEN1 = 1; 
 TR0 = 1;
 }
 }
 if (!k3) {
 delay(10);
 if (!k3) {
 while(!k3);
 TH1 = (65536 - 1700) / 256;
 TL1 = (65536 - 1700) % 256;
 SEN2 = 0;
 DIAN3 = 0; DIAN4 = 1;
 SEN2 = 1; 
 TR1 = 1;
 }
 }
 if (!k4) {
 delay(10);
 if (!k4) {
 while(!k4);
 TH1 = (65536 - 1700) / 256;
 TL1 = (65536 - 1700) % 256;
 SEN2 = 0;
 DIAN3 = 1; DIAN4 = 0;
 SEN2 = 1; 
 TR1 = 1;
 }
 }
 }
}
全部回答
网上有很多啊
严重同意楼上意见,用中断来做脉冲计数,安全可靠,不会丢失脉冲。四个按键的处理可以放在程序前面,读取状态后,调用相应的启动,停止之类的子程序。
使用T0和T1外部脉冲计数,控制两个电机,到1700个脉冲电机停止,
--统计脉冲个数,用外部中断更好。
--T0和T1,留着定时用。
用四个按键控制,按键1控制电机正转,按键2控制电机反转,按键3控制电机1正转,按键4控制电机2正转,怎么用C语言编程?
--编程前,要先设计出来电路。追问电路图是按照上面图片中的电路!T0控制电机1,T1控制电机2,T0和T1通过光电传感器测量脉冲,到1700个脉冲电机停止。追答#include
sbit k1 = ?; //楼主自己定义吧
sbit k2 = ?
sbit k3 = ?
sbit k4 = ?
sbit DIAN1 = ?
sbit DIAN2 = ?
sbit DIAN3 = ?
sbit DIAN4 = ?
sbit SEN1 = ?
sbit SEN2 = ?
void delay(unsigned int x)
{
unsigned int m, n;
for(m = x; m > 0; m--) for(n = 115; n > 0; n--);
}
void main(void)
{
TMOD = 0x55;
IE = 0x8a;
while(1) {
if (!k1) {
delay(10);
if (!k1) {
while(!k1);
TH0 = (65536 - 1700) / 256;
TL0 = (65536 - 1700) % 256;
SEN1 = 0;
DIAN1 = 0; DIAN2 = 1;
SEN1 = 1;
TR0 = 1;
}
}
if (!k2) {
delay(10);
if (!k2) {
while(!k2);
TH0 = (65536 - 1700) / 256;
TL0 = (65536 - 1700) % 256;
SEN1 = 0;
DIAN1 = 1; DIAN2 = 0;
SEN1 = 1;
TR0 = 1;
}
}
if (!k3) {
delay(10);
if (!k3) {
while(!k3);
TH1 = (65536 - 1700) / 256;
TL1 = (65536 - 1700) % 256;
SEN2 = 0;
DIAN3 = 0; DIAN4 = 1;
SEN2 = 1;
TR1 = 1;
}
}
if (!k4) {
delay(10);
if (!k4) {
while(!k4);
TH1 = (65536 - 1700) / 256;
TL1 = (65536 - 1700) % 256;
SEN2 = 0;
DIAN3 = 1; DIAN4 = 0;
SEN2 = 1;
TR1 = 1;
}
}
}
}
字数超出最大允许值,请删减!
还有两个中断函数。
但是,百度不让写了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
侧身睡对身体有好处吗?
新婚婚房里的对联什么时候能揭下来
LZ发型屋地址在哪,我要去那里办事
现在人都有商业保险的需求么?感觉真的不好做
脉冲铁手怎么连?
合肥有什么著名的特产
请问有谁知道在苏州九龙医院生产要多少费用?
唛浪时尚KTV星空钱柜(三衢店)在什么地方啊,
有关家的诗句
在淘宝上买了两双Nike鞋子 ,刚付完款晚上查
鳕鱼属于海鱼还是江渔
跪求小辣椒20160202w怎样刷机
Windows7系统,我不小心把一些自己重要的文件
什么是国家的意识形态?
太阳雨太阳能南皮-001地址在什么地方,想过去
推荐资讯
大话西游手游怎么结拜 结拜有什么好处
1992年和1998年八字合吗
我弟弟在看守所,今天我可以去看他吗
安庆市区怎么去槎水镇
1996年是什么年 什么命
sigma的血清高丰度蛋白去除试剂盒(ProteoPrep
河南项城市,二高和三高哪所好一点
写在WORD的文章不小心删了,怎么办?
坚峰建材在哪里啊,我有事要去这个地方
《i got7》最后的歌曲叫什么?
晋城司徒小镇新房源有哪些
呼市呛面馒头这个地址在什么地方,我要处理点
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?