/************************************************************** 分秒计时器 数码管:P0 位选,P22.P23.P24 接 138 控制段选 24C02: P20 串行时钟.P21 串行数据 进入系统,显示00-00.0 按键1:时间清零,重新计时 按键2:暂停开始键 按键3:抓取计时时间,计时后台进行 再次按下则进入计时 按键4:存储屏幕时间 按键1:时间清零,重新计时 按键4:存储屏幕时间 按键6:计时暂停,进入读取存储时间模式 再次按下进入计时 按键7:查看前一组数据,递减到第一组后再按失效 按键8:查看下一组数据,到第8 组则返回第一组 按键1:时间清零,重新计时 无论什么情况下均可按下按键1 重新计时 所存数据自动覆盖 **************************************************************/ #include #include #define uchar unsigned char #define uint unsigned int #define nop5 delay5us(); #define numcode P0 //宏定义numcode 显示数码管段选 #define alonekeyboard P1 //宏定义独立键盘接口 #define time138 2 //定义数码管灯辉延时时间 sbit a138 = P2^2; //定义译码器输入端A 在 P2.2 管脚上 sbit b138 = P2^3; //定义译码器输入端B 在 P2.3 管脚上 sbit c138 = P2^4; //定义译码器输入端C 在 P2.4 管脚上 sbit scl=P2^0; //24C02 串行时钟 sbit sda=P2^1; //24C02 串行通信 uchar timer0_n,min,sec,cs; void delay5us () { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); } //################################################################## /******************************************************************** 以下为通过138 译码器显示数字的独立模块 例如: display(5, 3) 则在第5 个位置显示3 具有独立的参数宏定义,自带延时函数 内部各函数有各自介绍 ********************************************************************/ unsigned char code num[]={ 0x3f,0x06,0x5b,0x4f,0x66, //0 1 2 3 4 0x6d,0x7d,0x07,0x7f,0x6f, //5 6 7 8 9 0x40}; unsigned char code nu_[]={ 0xbf,0x86,0xdb,0xcf,0xe6,//0.1.2.3.4. 0xed,0xfd,0x87,0xff,0xef,//5.6.7.8.9. }; void delayms (unsigned int ms) //延时函数,在12MHz 的晶振下大约为1ms { unsigned int i...