采用12mhz晶体,利用jquery 定时器器0在方式1情况下jquery 定时器5ms,用汇编语言将设置的初值赋给相应的寄存器并

【图文】项目四 定时器与数码管动态显示_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
项目四 定时器与数码管动态显示
上传于|0|0|暂无简介
大小:1.23MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
1、假定甲乙机以方式1进行串行数据通信,晶振=12MHz,要
下载积分:1000
内容提示:1、假定甲乙机以方式1进行串行数据通信,晶振=12MHz,要
文档格式:DOC|
浏览次数:155|
上传日期: 11:51:04|
文档星级:
该用户还上传了这些文档
1、假定甲乙机以方式1进行串行数据通信,晶振=12MHz,要
官方公共微信查看: 796|回复: 11
配置好的话,应该能流畅,不好就。。。
可以,他们是独立工作,如果是中断的话,定时器0的优先级高于定时器1
一路同行工作室
完全可以同时使用,还是程序什么地方疏忽了,仔细检查一下,尤其是启动控制、中断允许控制、定时值重新装载部分。
qwert147258
定时器0工作于方式3 时,占用了定时器1的TR1和TF0。 此时,定时器1只能工作于“串口波特率发生器”的模式。 把定时器1,按照“波特率发生器”的模式设置,写入初始值即可正常工作。 看看书去吧,有这方面的说明的。
James830410
不会发生这样的情况的 void Timer_Init() { TMOD = 0X21; TH0 = 0XFC; //12M晶振 1毫秒 TL0 = 0XB8; TH1 = 0X3C; //50毫秒 TL1 = 0XB0; TR0 = TR1 = 1; ET0 = ET1 = 1; EA = 1; } 方式1在中断函数里面要对TH,TL重新赋值 方式2不需要重新赋值,
TMOD=0X11;
linxue1029
0c78 = B 、11000
首先明确三种方式的计数范围:方式0是13位的定时/计数器,记满值为2^13=8192方式1是16位的定时/计数器,计满为2^16=65536方式2是8位的定时/计数器,计满为2^8=256.我以方式1来举例说明(12M晶振):如果我想计数1S,但是计数方式1的计数最大计数
越、幸福。
不是你写的那样 机器周期 :Tcy 定时器产生一次中断的时间为 : t 计算的个数 ; N= t/Tcy 晶振12的好计算11.0592的要换算 THx = 256 -N TLx = 256 - N; Tcy = 12 * (1/.0851 以1秒计时为例 当计数250个数时 需要耗时 1.0851 * 250 =君,已阅读到文档的结尾了呢~~
硬件实习报告定时器设计设计,定时,硬件,定时器,设计报告,硬件设计,实习报告,器设计报告,定时器硬件,硬件定时器
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
硬件实习报告定时器设计
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口设MCS-51单片机使用的晶振是12MHz,欲使用定时器/计数器1实现50ms定时中断.-中国学网-中国IT综合门户网站-提供健康,养生,留学,移民,创业,汽车等信息
> 信息中心 >
设MCS-51单片机使用的晶振是12MHz,欲使用定时器/计数器1实现50ms定时中断.
来源:互联网 发表时间: 11:07:41 责任编辑:王亮字体:
为了帮助网友解决“设MCS-51单片机使用的晶振是12MHz,欲使用定时器/计数器1实现50ms定时中断.”相关的问题,中国学网通过互联网对“设MCS-51单片机使用的晶振是12MHz,欲使用定时器/计数器1实现50ms定时中断.”相关的解决方案进行了整理,用户详细问题包括:RT,我想知道:设MCS-51单片机使用的晶振是12MHz,欲使用定时器/计数器1实现50ms定时中断.,具体解决方案如下:解决方案1:
12MHz 的晶振,那么一个周期就是 1 us,所以需要计数 50ms / 1us = 50000,可以选择定时器工作方式 1。由上述计算:TH1 = (65536 - 50000) / 256;TL1 = (65536 - 50000) % 256;方式一,所以:TMOD = 0x10;运行 TR1 = 1,所以:TCON = 0x40;允许中断 ET1 = 1,EA = 1,所以:IE = 0x88;综合可以编写如下程序(汇编我不会,不知道你要的是汇编还是C):#include &reg52.h&void timer1_int() interrupt 3{ TH1 = (65536 - 50000) / 256; TL1 = (65536 - 50000) % 256;}void timer1_init(){ TH1 = (65536 - 50000) / 256; TL1 = (65536 - 50000) % 256;
TMOD = 0x10;
IE = 0x88; TCON = 0x40;}void main(){ timer1_init(); while(1);}
解决方案2:不管使用什么工作方式都是可以完成的,这个取决于你设置的定时/计数器的初值。下面使用方式一和方式二来分别说明。一、使用方式一:晶振频率为12MHz,机器周期为1us,50ms时间需要计数50000次,故计数器初值为(),65536是因为方式一中,定时/计数器的最大值为6),当然写程序时不一定非要这么计算,因为定时/计数器是溢出产生中断,也就是从最大加1就溢出,最大加1就是等于0的,只要计数个数加上初值等于0就溢出了,也就产生中断了。由于题目上给的是TH1、TL1,所以,设置的时候必须设置定时/计数器T1。故TMOD = 0x10,TCON中只需要设置TR1为1,故TCON = 0x40,IE需要设置ET0和EA为1,故IE = 0x88。C语言程序:#include &Reg52.h&void main (void){ TMOD = 0x10; TH1 = (-50000&&8); TL1 = -50000; TCON = 0x40; IE = 0x88; while(1);} void T1_int (void) interrupt 3{供唬垛舅艹矫讹蝎番莽 TH1 = (-50000&&8); TL1 = -50000;} 汇编程序如下: ORG 0000H AJMP MAIN ORG 001BH AJMP T1INT ORG 0100HMAIN:
MOV TMOD, #10H MOV TH1, #HIGH(-50000) MOV TL1, #LOW(-50000) MOV TCON, #40H MOV IE, #88H AJMP $T1INT: PUSH ACC MOV TH1, #HIGH(-50000) MOV TL1, #LOW(-50000) POP ACC RETI二、使用方式二:由于方式二最大计数值只能是256,显然装不下50000,故可以选一个比较小的计数值,做多次循环就可以做到。选用计数个数为200,那么循环250次就可以了。C语言程序:#include &Reg52.h&void main (void){ TMOD = 0x20; TH1 = -200; TL1 = -200; TCON = 0x40; IE = 0x88; while(1);} void T1_int (void) interrupt 3{ static unsigned char i = 0; if (++i &= 250) i = 0; //如果等于250次,说明50ms时间到了} 汇编语言: ORG 0000H AJMP MAIN ORG 001BH AJMP T1INT ORG 0100HMAIN:
MOV TMOD, #20H MOV TH1, #-200 MOV TL1, #-200 MOV R1, #250 MOV TCON, #40H MOV IE, #88H AJMP $T1INT: PUSH ACC DJNZ R1, OUT MOV R1, #250OUT: POP ACC RETI
解决方案3:
只有用方式1了。初始值==1HTH1=#3CH TL1=#0B0HTMOD=#B其他包括程序就简单了,需要再说。
相关文章:
最新添加资讯
24小时热门资讯
Copyright © 2004- All Rights Reserved. 中国学网 版权所有
京ICP备号-1 京公网安备02号}

我要回帖

更多关于 555定时器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信