完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
#include "reg52.h"
typedef unsigned int u16; typedef unsigned char u8; ***it IN1=P1^0; ***it IN2=P1^1; ***it IN3=P1^2; ***it IN4=P1^3; void timer0Init() { TMOD|=0X01; TH0=0XFF; TL0=0XFF; ET0=1; EA=1; TR0=1; } void Timer1Init() { TMOD|=0X10; TH1=0XFF; TL1=0XFF; ET1=1; EA=1; TR1=1; } void main() { Timer0Init(); Timer1Init(); while(1); } void Time0() interrupt 1 { static u16 i; TH0=0XFF; TL0=0XD1; i++; if(i==20) { i=0; } if(i<15) { IN1=1; IN2=0; } else { IN1=0; IN2=0; } void Timer1() interrupt 3 { static u16 X; TH1=0XFF; TL1=0XFF; X++; if(X==10) { X=0; } if(X<6) { IN3=1; IN4=0; } else { IN3=0; IN4=0; } } |
|
相关推荐
11个回答
|
|
|
晕,你报错的原因是定时器中断0少了个挂号符号。少了个这个},你仔细看看,还有可以把报错原因复制然后百度上翻译
|
|
|
|
|
|
有错是什么意思?不明白你要问什么?输出不了PWM吗
|
|
|
|
|
|
|
|
|
定时器定时器定一次的时间是不是有点大?
晶振如果是11.0592MHz的话,定时器0是0xFFD1*1.09us进一次中断,定时器1是0xFFFF*1.09us进入一次中断。 定时器0的PWM周期=(0xFFD1*1.09us)*19,定时器1的PWM周期=(0xFFFF*1.09us)*9,如果电机是转的很慢的话可以适当减小进每一次中断的时间和PWM的周期,例如(2000*1.09us)*20。 如果你是用的L298N模块,ENA和ENB一定要接高电平使能。 |
|
|
|
|
|
这个定时器定的是100微妙 电机转的还可以不算慢;现在的问题是这个程序代码在编译的时候后报错,您能给看看程序哪有问题吗
|
|
|
|
|
|
100us? 1T的51单片机吗?
|
|
|
|
|
|
不好意思我是刚入门1T单片机是什么意思;用的是90C51型号的单片机
|
|
|
|
|
|
1T是说单片机的运行速度比传统的51单片机快10倍左右,在相同的条件下
|
|
|
|
|
|
编译通过
如下: #include "reg52.h" typedef unsigned int u16; typedef unsigned char u8; ***it IN1=P1^0; ***it IN2=P1^1; ***it IN3=P1^2; ***it IN4=P1^3; void Timer0Init() { TMOD|=0X01; TH0=0XFF; TL0=0XFF; ET0=1; EA=1; TR0=1; } void Timer1Init() { TMOD|=0X10; TH1=0XFF; TL1=0XFF; ET1=1; EA=1; TR1=1; } void main() { Timer0Init(); Timer1Init(); while(1); } void Time0() interrupt 1 { static u16 i; TH0=0XFF; TL0=0XD1; i++; if(i==20) { i=0; } if(i<15) { IN1=1; IN2=0; } else { IN1=0; IN2=0; } } void Timer1() interrupt 3 { static u16 X; TH1=0XFF; TL1=0XFF; X++; if(X==10) { X=0; } if(X<6) { IN3=1; IN4=0; } else { IN3=0; IN4=0; } } |
|
|
|
|
|
我直接给个程序给你吧,你自己改晶振,程序试过了能用,但有点问题,你自己调。
pwm1=65536-zkb*8-5; pwm2=65536-(256-zkb)*8-5;//减5就是因为单片机调用程序需要时间。 void tm0() interrupt 1 { p00 = ~p00; //反转PWM的输出标志 if (p00) { ssec++; TL0 = pwm2; //设置定时18ms初值 TH0 = pwm2>>8; //设置定时18ms初值 } else { TL0 = pwm1; //准备高电平的重载值1到2MS TH0 = pwm1>>8; } } |
|
|
|
|
|
我寻思着你的 NI2和NI4全程低电平啊。有啥作用啊?
|
|
|
|
|
只有小组成员才能发言,加入小组>>
1955 浏览 0 评论
imx6ull 和 lan8742 工作起来不正常, ping 老是丢包
4778 浏览 0 评论
4256 浏览 9 评论
3845 浏览 16 评论
4422 浏览 1 评论
4255浏览 3评论
2413浏览 0评论
3431浏览 0评论
1194浏览 0评论
2883浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-12 04:11 , Processed in 1.160145 second(s), Total 99, Slave 78 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
672