|
蓝桥杯第一届代码
详细代码看附录
- #include <STC15F2K60S2.H>
- #include "sys.h"
- uchar seg_dly, led_dly, key_dly;
- uchar seg_pos, seg_buf[9], seg_code[8] ={0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
- uchar key_val, key_old, key_up, key_down;
- uchar count = 3; //蜂鸣器响的次数
- uchar count_save = 3; //保存在AT24CO2的发声次数
- uint period = 0; //周期的时间为700ms
- uchar buzz_stat = 0x00; //蜂鸣器的状态
- void main()
- {
- ClsPeripherial();
- Timer1Init();
- count_save = ReadEEPROM(0x01); //读取EEPROM的次数
- count = count_save; //把次数赋值给真正的次数
- while(1)
- {
- KeyProc();
- SegProc();
- }
- }
-
- void Timer1() interrupt 3
- {
- if(++seg_dly == 200) seg_dly = 0;
- if(++led_dly == 100) led_dly = 0;
- if(++key_dly == 10) key_dly = 0;
-
- if(count)
- {
- period++;
- if(period <= 200) //发声时间为200ms
- {
- buzz_stat = 0x40;
- }else if(period <= 700)//不发声时间500ms
- {
- buzz_stat = 0x00;
- }else
- {
- period = 0;
-
- if(!count) count = 0;
- count--;
- }
- }
-
- Y5C(buzz_stat);
- SegDisp(seg_pos, seg_code[seg_pos]);
- if(++seg_pos == 8) seg_pos = 0;
- }
复制代码
|
|