完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
求指教 2个定时器设置一样 但是闪烁时间明显不同
#include ***it dula=P2^6; ***it wela=P2^7; ***it d1=P1^0; ***it d2=P1^1; void delayms(unsigned int);unsigned char num,num1,num2; void main() { TMOD=0X01; TH0=(65536-45872)/256; TL0=(65536-45872)%256; TH1=(65536-45872)/256; TL1=(65536-45872)%256; EA=1; ET0=1; ET1=1; TR1=1; TR0=1; while(1); } void dingshi1() interrupt 3 { TH1=(65536-45872)/256; TL1=(65536-45872)%256; num2++; if(num2==20) { num2=0; d2=~d2; } } void dingshi0() interrupt 1 { TH0=(65536-45872)/256; TL0=(65536-45872)%256; num1++; if(num1==20) { num1=0; d1=~d1; } } |
|
相关推荐
4个回答
|
|
这个是我昨天回答的一个问题,没想到今天依然有用,让我这个老菜鸟给你回答吧,与或非你知道是啥意思了吧?PO = 0XFE;也就是二进制的1111 1110,对不对?0x01取反等价于~0X01也就是0XFE,&是什么作用呢?让某一位清零,也就是最低位清零,而其他位保持不变,|呢?让某一位置1,其他保持不变,但是为什么要这样用呢?以后如果你有机会同时用到了两个定时器(特指51),比如说TMOD这个寄存器,他是不能进行单独的位操作的,一次必须操作整个8位数据,如果你只用到了定时器0或者是定时器1,那么你设置TMOD = 0X01;也对,但是已经影响到了定时器1的设置了,定时器1不用还好,如果用的话,就容易出错,所以你应该这样写TMOD &= 0XF0;即低四位清零,高四位不变,TMOD |= 0X01;最低位置1,高7位不改变,这就达到了互不干扰的目的,明白了吗?不明白,加QQ597627977,详聊
|
|
|
|
你的TMOD设置错了 你的T1方式设置错误,应该是方式1,不是方式0 你的T0是用了方式1,T1是用了方式0 所以时间不同 所以正确的是TMOD=0x11
|
|
|
|
嗯嗯 明白了 谢谢 |
|
|
|
嗯嗯 谢谢 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
417 浏览 0 评论
430 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
393 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
974 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1055 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11779 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 00:48 , Processed in 0.643266 second(s), Total 77, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号