完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
|
相关推荐
18个回答
|
|
|
首先是怎么单片机如何确定开始计时的问题,是什么中断方式来做?比如,按键,实时时钟,串口等等外设模块,得到这个信号后就方便了,在中断服务程序里直接启动定时器也行,置位一个标志位跳到主程序去处理也行
|
|
|
|
|
|
定时器工作有三个条件:1.初始值2.开启总中断3,打开定时器中断 你只要打开和关断条件3即可
|
|
|
|
|
|
通过设置定时器th1和th0的值设置初始值,同时打开中断,当中断产生时,定时器开始计时并且到达时间产生中断进行下一步骤
|
|
|
|
|
|
51单片机有两个定时器 每个定时器又有四种模式 你要自己自己选择模式
列如 定时器0 模式1 TMOD=0X01; TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;意思是打开定时器0的工作模式1 定时50ms溢出 |
|
|
|
|
|
设置 中断总开关EA 或者定时器0或1的中断允许
|
|
|
|
|
|
需要用的时候开启定时器中断(别忘了定时器赋初值),不用的时候定时器关闭中断即可。
|
|
|
|
|
|
那是不是只要定时器初值设置好,需要时直接给TR置1就可以了呢。还是需要在特定情况下TR置1才有效 |
|
|
|
|
|
那是不是只要定时器初值设置好,需要时直接给TR置1就可以了呢。还是需要在特定情况下TR置1才有效 |
|
|
|
|
|
先设置定时器模式 再赋初值 再打开定时器 需要中断再打开中断
|
|
|
|
|
|
TR0=1 是打开定时器0 一打开就开始计时
|
|
|
|
|
|
能给看一下我这个程序哪错了么?它老是不能计时,debug显示不进入中断 #include # include # define uint unsigned int # define uchar unsigned char uint tt=0; void timerdy () { tt=0; P0=0xfe; TMOD=0X01; TH0=0X4C; TL0=0X00; IE=0X82; } void delay(uint a) { uint b,c; for(b=0;b<=a;b++) for(c=0;c<=110;c++); } void main () { timerdy(); while(1) { P0=_crol_(P0,1); delay(1000); if(P0==0xef) { TR0=1; P1=0x00; } if(tt==40) { tt=0; P1=0xf0; TR0=0; } } } void timer() interrupt 1 using 2 { TH0=0X4C; TL0=0X00; tt++; } |
|
|
|
|
|
|
|
|
|
|
|
1、打开总中断2,、打开定时器中断,3,给高八位、低八位赋初始值
|
|
|
|
|
|
总中断跟定时器中断没打开 |
|
|
|
|
|
即EA=1;ETO=1; 这样打开应该就不会错啦 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
少个EA=1总中断服务打开 |
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
265 浏览 0 评论
【原创】【RA4M2-SENSOR开发板评测】低功耗+USB综合测试
789 浏览 0 评论
1306 浏览 2 评论
787 浏览 0 评论
【RA4M2-SENSOR开发板评测】Analogue+Timers综合测试
1587 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16902 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 13:17 , Processed in 1.141406 second(s), Total 109, Slave 90 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
5535