完善资料让更多小伙伴认识你,还能领取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全程低电平啊。有啥作用啊?
|
|
|
|
只有小组成员才能发言,加入小组>>
2970 浏览 9 评论
2687 浏览 16 评论
3212 浏览 1 评论
8426 浏览 16 评论
3770 浏览 18 评论
6950浏览 6评论
求助,请问MS51FB9AE带隙电压能作为侦测的基准电压吗?
7449浏览 3评论
6950浏览 3评论
支持UART-to-BLE透传的新唐NuTool – BLE ATCMD开发工具推荐
5798浏览 3评论
9370浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-20 03:03 , Processed in 1.426917 second(s), Total 80, Slave 70 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号