欢迎来到天天文库
浏览记录
ID:39616016
大小:336.00 KB
页数:7页
时间:2019-07-07
《实验6 定时器》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、CHANGZHOUINSTITUTEOFTECHNOLOGY新型单片机实践题目:定时器二级学院(直属学部):延陵学院专业:电气工程及其自动化班级:10电Y2学生姓名:熊群学号:10120827一、实验目的1、学习89C52单片机定时器的使用和编程2、熟悉定时器中断处理程序的编程3、掌握数据处理程序的编程4、掌握具体的单片机应用系统的软硬件设计方法二、实验电路元器件编号元器件名称说明U1AT89C52.BUS总线型AT89C52单片机S1~S4BUTTON按钮开关R1~R4RES电阻7SEG-BCDBCD译码7段数码管显示器三、实验流程四、实验调试和操作在按下“启动”按钮后,计时器开始工作,
2、在按下“暂停/继续”按钮后,计时器停止计时,再按下“暂停/继续”按钮后,计算器继续计时,按下“清零”按钮之后,计数器变为0,按下“退出”按钮后,退出计时模式。五、实验程序#include//片内寄存器定义#include//输入输出函数库#include//内部函数库sbitstartButton=P0^0;//启动按钮sbitpauseButton=P0^1;//暂停/继续按钮sbitresetButton=P0^2;//清零按钮sbitexitButton=P0^3;//退出计时器模式按钮bitint0_Mark;/******
3、HEXtoBCD*****/unsignedcharHEXtoBCD(unsignedcharhex){return((hex/10)*16+(hex%10));}/*****MAINc*****/voidmain(void){unsignedcharuc10ms=0,uc1s=0,uc60s=0;TMOD=0x01;//设置定时器0为工作方式1IE=0x82;//打开定时器中断while(1){exitButton=1;uc10ms=0;uc1s=0;uc60s=0;P1=HEXtoBCD(uc10ms);//显示1/100P2=HEXtoBCD(uc1s);//显示秒P3=HEXtoB
4、CD(uc60s);//显示分while(startButton);while(!startButton);//启动while(exitButton){//=1,开始计时,否则退出计时器模式int0_Mark=1;TH0=0xDC;TL0=0x00;//设置定时器的初值为DC00H,定时时长为10msTR0=1;//开启定时器0EA=1;while(int0_Mark);//等待10ms定时到EA=0;TR0=0;uc10ms++;if(uc10ms==100){uc10ms=0;uc1s++;}P1=HEXtoBCD(uc10ms);//显示百分之一秒if(uc1s==60){//满60
5、秒,即一分uc1s=0;uc60s++;}P2=HEXtoBCD(uc1s);if(uc60s==60){uc60s=0;}P3=HEXtoBCD(uc60s);//显示分if(!pauseButton){//暂时/继续while(!pauseButton);while(pauseButton){if(!resetButton){//清零uc10ms=0;uc1s=0;uc60s=0;P1=HEXtoBCD(uc10ms);P2=HEXtoBCD(uc1s);P3=HEXtoBCD(uc60s);}if(exitButton==0){exitButton=0;break;}}while(!
6、pauseButton);}if(!resetButton){uc10ms=0;uc1s=0;uc60s=0;P1=HEXtoBCD(uc10ms);P2=HEXtoBCD(uc1s);P3=HEXtoBCD(uc60s);}}}}/***********定时器0的中断服务程序****************/voidtimer0(void)interrupt1{EA=0;//关总中断int0_Mark=0;TR0=0;//停止计时TH0=0xDC;TL0=0x00;//设置定时器的初值为DC00H,定时时长为10msTR0=1;//开启定时器0EA=1;}六、实验效果图开始键暂停/继续按
7、键清零键(计数又从0开始)退出键
此文档下载收益归作者所有