完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我想用51的定时器来产生固定脉冲,脉冲宽度数据存放在数组里面。每次中断后将新的数据装进TH和TL,但是测量输出脉冲宽度怎么都不对! 我使用具体数值装入TH和TL产生脉冲确实对的,一旦装入值为变量,出来的脉冲就不对了,如TH1=(65535-x)/256;TL1=TH1; 其中x我在外面赋值x=500;但是脉宽出来就不对了。请问大家有遇到这个情况吗? 还有另外一个问题,我在xdata中定义的数据如果想强制转换成data,改怎么转换?
|
|
相关推荐
10个回答
|
|
变量x是char型还是int型,第二个定义变量的时候可以加个data修饰
|
|
|
|
我的设置 是small,默认应该就是data了。我定义其实是在xdata中,然后强制转成data了,但是我实测时脉宽只要装值时设置的是变量所出来的脉宽就不对,不知道是我设置的不对还是怎么,
|
|
|
|
你这小程序不用理会什么small large的设置,不明白你说的定义在xdata中怎么强制转换成data,xdata和data完全两个不同的存储区,你是要把xdata中的数据搬到data中?要做什么?脉宽不对你看过你的变量x定义的是什么类型了吗,如果是char型你赋值500那么实际值是244,int型才是500,进调试看看吧
|
|
|
|
不好意思没表示清楚,我是想把xdata存的uchar类型数据转成存储在data里的uint类型,可以直接(unsigned int)吗? 变量x定义是unsigned int类型的
|
|
|
|
xdata是***的ram?可以直接强制转换
|
|
|
|
没外挂ram,只是当时数组放data放不下了,就存xdata了。一时找不到问题,只能等这段时间过了再来看看到底怎么回事。
|
|
|
|
data放不下可以把使用频率不是很高的全局变量定义到idata,没有什么转换成data的问题,跟data一样取值,还有,定义x的时候直接定义成int型吧,强制转换只能作用一次,用完了还是char型
|
|
|
|
data和idata占用的同样都是片内ram,好像只是寻址方式不同。 软延时还是达不到我要的功能,看来还是得找出定时器的问题在哪
|
|
|
|
才发现,你这TH1=(65535-x)/256;TL1=TH1;能对?
|
|
|
|
呵呵,这是我偷懒写错了, 实际不是这么写的,自动重装才这样在TH1,TL1之间赋值
|
|
|
|
只有小组成员才能发言,加入小组>>
3314 浏览 9 评论
2995 浏览 16 评论
3494 浏览 1 评论
9059 浏览 16 评论
4088 浏览 18 评论
1178浏览 3评论
605浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
599浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2335浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1896浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 07:22 , Processed in 1.312501 second(s), Total 97, Slave 77 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号