|
MAIN.C
main.h
- #define Ulong unsigned long
- #define Uint unsigned int
- #define Uchar unsigned char
- #define Uint unsigned int
- #define Uchar unsigned char
-
- sbit DU =P2^6;//数码管段选
- sbit WE =P2^7;//位选
- sbit count_bit =P3^5;
- double code Crystal = 11.0592; // 晶振频率 设定
- double code Clock_Cycle = 12; // 时钟周期
- double Machine_Cycle; // 机器周期
- Ulong Need_time_US; // 微秒总数量
- Ulong Need_time_MS; // 计算溢出的毫秒
- Ulong Need_time_S; // 计算溢出的微秒
- Ulong Need_time; // 溢出的总数量计算
- Ulong use_count; //已经执行的数量
- Uchar code DUtabel[] = {
- 0x3F,
- 0x06,
- 0x5B,
- 0x4F,
- 0x66,
- 0x6D,
- 0x7D,
- 0x07,
- 0x7F,
- 0x6F,
- 0x77,
- 0x7C,
- 0x39,
- 0x5E,
- 0x79,
- 0x71,
- 0x76,
- 0x38,
- 0x40,
- 0x00,
- };
- Uchar code WEtabel[] = {
- 0x00,//全亮,补位选空位
- 0xFE,
- 0xFD,
- 0xfb,
- 0xf7,
- 0xef,
- 0xdf,
- 0xbf,
- 0x7f,
- };
- void Sys_init();
- void Set_Time0(Ulong Us_time, int mod);
- void showval(Uchar val,Uchar WEval);
- void showval(Uchar val, Uchar WEval);
- void delay(Uchar z, int mod);
- void display(Ulong Z);
- void Set_Counter0(int Counter_switch);
- void main1()
- {
- long int a=0;
- while (1) {
- display(333);
- }
- }
- /*
- 数码管显示函数:
- 参数1:显示的数据0-9
- 参数2:需要在显示的位1-8
- */
- void showval(Uchar val, Uchar WEval)
- {
-
-
- WE = 1; // 打开位选锁存
- P0 = WEtabel[WEval]; // 选择位选
- //P0 = 0XFE;
- WE = 0; // 位锁存
-
-
- DU = 1; // 打开段选锁存器
- P0 = DUtabel[val]; // 送数据
- // P0 = 0XFE;
- DU = 0; // 段锁存
-
-
- }
- /*
- 延迟函数.
- 参数1:z为数量
- 参数2:mod为模式
- 1:毫秒
- 2:秒
- */
- void delay(Uchar z, int mod)
- {
- Ulong i;
- if (mod == 1) {
- for (i = 0; i < z; i++) {
- unsigned char a, b;
- for (b = 102; b > 0; b--)
- for (a = 3; a > 0; a--)
- ;
- }
- }
- else if (mod == 2) {
- for (i = 0; i < z * 1000; i++) {
- // 10000us //误差 -0.000000000002us
- unsigned char a, b;
- for (b = 102; b > 0; b--)
- for (a = 3; a > 0; a--) ;
- }
- }
- }
- /*显示长数字*/
- void display(Ulong Z)
- {
- // Z长度
- int Zlen = 0;
- /*存储Z每个位的数字数组变量*/
- int val[8];
- int i;
- while (Z != 0) {
- // 提取n的各个数位上的数
- val[Zlen++] = Z % 10;
- Z /= 10;
- }
- for (i = 0; i < Zlen; i++) {
- P0 = 0XFF; // 清除段码
- showval(val[i], 8 - i);
-
- delay(1, 1);
- }
-
- }
复制代码 |
|