ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:74.81KB ,
资源ID:22635826      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22635826.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(福建师范大学MCU作业任务内部定时器01应用Word文档格式.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

福建师范大学MCU作业任务内部定时器01应用Word文档格式.docx

1、2、说说把显示程序放在主程序和定时中断程序的优缺点。答:显示程序放在主程序时会一直占用空间执行,但执行速度比较快显示程序放在中断程序是通过中断服务程序中被调用而执行的,每中断一次调用一次,故执行耗时间。附录1.用定时器编写一个秒计时器运行32秒后(左秒数位,右毫秒位):#includereg52.h#define DISP_NULL 10#define LED_NUM 8char DispBuf8;unsigned int mSec=0,Sec=0;unsigned char DispPot=0;unsigned char code LEDCODE=0x3f,0x06,0x5B,0x4F,0x

2、66,0x6D,0x7d,0x07,0x7F,0x6F,0x00;void DispFlash(void) P3=0xff; /将所有数码管都置为不亮 P2=LEDCODEDispBufDispPot; /送该数码管的数据 P3=(1=LED_NUM) DispPot=0; /指针轮换void SysInit(void) TMOD=0x01; /设置定时器0为方式1 TR0=1; /启动定时器0进行计数 ET0=1; /开启定时器0中断功能 EA=1; /开启总中断void Printf_NUM(void) DispBuf7=mSec%10; DispBuf6=(mSec/10)%10; Di

3、spBuf5=mSec/100; DispBuf4=DISP_NULL; DispBuf3=DISP_NULL; DispBuf2=Sec%10; DispBuf1=(Sec/10)%10; DispBuf0=Sec/100;/主函数void main() SysInit(); /初始化 while(1) Printf_NUM(); / 将这个数的每一位分解到显示缓冲区 #define FRE 12000000.0 /系统时钟频率#define INC_TIME (1000000/(FRE/12) /每个计时时钟的周期时间,采用12分频,单位微妙#define NEED_TIME(TIME)

4、(65535-(unsigned int)(TIME/INC_TIME) /计时TIME时间需要多少个计数个数#define COUNT_T(TIME) TL0=NEED_TIME(TIME);TH0=NEED_TIME(TIME)8 /定时时间预置给高,低位8位的THO TLOvoid Time0Int(void) interrupt 1 COUNT_T(1000); /给定时器赋需要定时的时间初值 单位微妙 DispFlash(); /进行数码管显示刷新 mSec+ ; if( mSec= 1000 ) /毫秒与秒的进制 mSec= 0, Sec+ ; 2.在实验程序基础上编写一个24小时

5、计时时钟运行状态:#include #define DISP_NULL 10 / 显示为空#define DISP_EQU 11 / 显示等号#define LED_NUM 8 / 共有8个数码管 / 显示缓冲区unsigned int mSec= 0; / 毫秒unsigned char Sec= 52, Min= 59, Hour= 12; / 秒,分,时/*函数:FlashDisp,该函数实现动态显示的一次刷新-入口:无出口:*/unsigned char DispPot=0 ; / 数码管动态扫描指针unsigned char code LEDCODE=0x3f,0x06,0x5B,0

6、x4F,0x66,0x6D,0x7d,0x07,0x7F,0x6F,0x00,0x48 ;void DispFlash( void ) P3= 0xff ; / 将所有数码管都置为不亮 P2= LEDCODEDispBufDispPot; / 送该数码管的数据 P3= (1= LED_NUM ) DispPot= 0 ; / 指针轮换PntNum,将一个数转成显示的格式void PntNum( void ) DispBuf7= Sec%10; DispBuf6= Sec/10; DispBuf5= DISP_EQU; DispBuf4= Min%10; DispBuf3= Min/10; Di

7、spBuf2= DISP_EQU; DispBuf1= Hour%10; DispBuf0= Hour/10;/* 函数:定时器0初始配置 功能:1000uS中断一回,对毫秒变量和秒变量进行进位操作*/void SysInit( void ) TMOD= 0x01 ; / 设置定时器0为方式1 TR0= 1 ; / 启动定时器0进行记数 ET0= 1 ; / 开启定时器0中断功能 EA= 1 ; / 开启总中断main,系统主函数void main( ) SysInit( ); while( 1 ) PntNum( ); / 将这个数的每一位分解到显示缓冲区/#define FRE 11059

8、200.0 / 系统时钟频率#define FRE 12000000.0 / 系统时钟频率#define INC_TIME (1000000/(FRE/12) / 每个计时时钟的周期时间,采用12分频,单位微秒#define NEED_TIME(TIME) (65536-(unsigned int)(TIME/INC_TIME) / 计时TIME时间需要多少个 计数个数#define COUNT_T(TIME) TL0= NEED_TIME(TIME); TH0= NEED_TIME(TIME)8 / 定时时间预置值给高、低位8位的 TH0 TL0定时器0中断程序2000uS中断一回,对毫秒变量和秒变量进行进位操作void Time0Int( void ) interrupt 1 COUNT_T(2000) ; / 给定时器赋需要定时的时间初值(单位微秒) DispFlash( ) ; / 进行数码管显示刷新 / 以下进行时间调整 mSec+ ; if( mSec 500 ) return ; / 如果没有到需要调整的值,退出 if( Sec 60 ) return ; Sec= 0; Min+ ; if( Min= 24 ) Hour= 0; 教师评阅:成绩:注:老师如已阅,方便的话能否通知!

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1