单片机设计秒表c程序.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机设计秒表c程序

/***************************************************************************** 《秒表》 *** Author:G.H. *** Time: 2010/11/28 显示和操作说明: (1)P0数码管用于显示当前是第几号计数器在工作; (2)P1口为共阴数码管的段选,P2为数码管的位选; (2)int0的按键用于控制“启动/停止”;init1的按键用于控制“清零”; (3)P34和P35用于调整数码管动态刷新速度; (4)P36用于切换计数器的值 *****************************************************************************/ #include reg51.h #define uchar unsigned char #define uint unsigned int //************* 函数说明 *************** void Init_Time(); void Init_INT(); void int0(); void int1(); void time0(); void display(); void displayOne(); void convert(); void keyScan(); void delay(uint); //************************************* sbit flash = P3^0; sbit UP = P3^4; sbit DOWN = P3^5; sbit SHIFT = P3^6; //共阴:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F unsigned char Led[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71}; uchar dis[]={0,1,2,3,4,5,6,7},disPos,pos,NO,keyNO,NUM=4; //keyNO表示shift键按的次数 uint ms_i; //用于控制数码管动态刷新的时间的变量 uchar sec[6] = {12,34,56,78};//毫秒值数组 uchar ms [6] = {34,56,78,90};//秒值数组 bit flag; //***************************************** void main() { NO=0; //表示当前工作的是第几号计数器 ms_i=256; //数码管初始刷新时间 flag=0; disPos=0xfe; Init_Time(); Init_INT(); convert(); while(1) { display(); //数码管动态显示 displayOne(); //显示NO号 keyScan(); } } //****** 外部中断初始化和处理函数 ********* void Init_INT() { TCON=0x01; EA=1; EX0=EX1=1; } void int0() interrupt 0 //start stop(store) { flag=~flag; if(flag)TR0=1; else {TR0=0;NO=(++NO)%NUM;} } void int1() interrupt 2 //clear { TR0=0;flag=0; ms[NO]=sec[NO]=0; convert(); } //****** 定时器中断初始化和处理函数 ******** void Init_Time() { TMOD=0X01; TH0=(65536-50000)/256;//50ms TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; } void time0() interrupt 1 { static uchar num; num++; if(num==2) { ms[NO]++; if(ms[NO]==100) { ms[NO]=0;sec[NO]++; if(sec[NO]==60) { sec[NO]=0; } } flash=~flash; num=0; convert(); } TH0=(65536-50000)/256;//5ms TL0=(65536-5

文档评论(0)

qwd513620855 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档