第六步:又重新焊接了 成功了
- //#include "shumaguan.h"
-
- #include "stc32g.h"
-
- #include "intrins.h"
-
-
- #define wei1 P34
- #define wei2 P35
- #define wei3 P36
- #define wei4 P37
-
- #define duan P2
-
- int i;
-
- unsigned char s,f,m,d;
- unsigned char sg,ss,fg,fs;
-
- unsigned char duanma[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,};//不带小数点
- unsigned char duanma1[10] = {0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,};//带小数点
-
- void Timer0_Init(void) //1000微秒@11.0592MHz
- {
- AUXR |= 0x80; //定时器时钟1T模式
- TMOD &= 0xF0; //设置定时器模式
- TL0 = 0xCD; //设置定时初始值
- TH0 = 0xD4; //设置定时初始值
- TF0 = 0; //清除TF0标志
- TR0 = 1; //定时器0开始计时
- ET0 = 1; //使能定时器0中断
- }
-
-
- void Delay1000ms(void) //@11.0592MHz
- {
- unsigned long edata i;
-
- _nop_();
- _nop_();
- i = 2764798UL;
- while (i) i--;
- }
-
- void Delay1ms(void) //@11.0592MHz
- {
- unsigned long edata i;
-
- _nop_();
- _nop_();
- i = 2763UL;
- while (i) i--;
- }
-
- void Delay3ms(void) //@11.0592MHz
- {
- unsigned long edata i;
-
- _nop_();
- i = 8293UL;
- while (i) i--;
- }
-
-
- void Delay2us(void) //@11.0592MHz
- {
- unsigned long edata i;
-
- _nop_();
- i = 4UL;
- while (i) i--;
- }
-
-
- // 延时函数
- void delay(unsigned char z)
- {
- unsigned char x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
-
- void main()
- {
-
- WTST = 0; //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
- EAXFR = 1; //扩展寄存器(XFR)访问使能
- CKCON = 0; //提高访问XRAM速度
-
- P0M1 = 0x00; P0M0 = 0x00; //设置为准双向口
- P1M1 = 0x00; P1M0 = 0x00; //设置为准双向口
- P2M1 = 0x00; P2M0 = 0x00; //设置为准双向口
- P3M1 = 0x00; P3M0 = 0x00; //设置为准双向口
- P4M1 = 0x00; P4M0 = 0x00; //设置为准双向口
- P5M1 = 0x00; P5M0 = 0x00; //设置为准双向口
- P6M1 = 0x00; P6M0 = 0x00; //设置为准双向口
- P7M1 = 0x00; P7M0 = 0x00; //设置为准双向口
- P3M0 = 0xf0; P3M1 = 0x00; //p34 p35 36 37 设为推完
- wei1 = 0;
- wei2 = 0;
- wei3 = 0;
- wei4 = 0;
- Timer0_Init();
- EA = 1; //CPU开放中断,打开总中断。
- s = 13;
- f = 51;
- while(1)
- {
- wei1 = 1;
- P2 = duanma[s/10]; // 显示对应的数字或字符,这里假设每个数码管显示的是其索引值
- Delay3ms();
- wei1 = 0;
-
-
- if(i<=500)
- {
- wei2 = 1;
- P2 = duanma[s%10]; // 显示对应的数字或字符,这里假设每个数码管显示的是其索引值
- Delay3ms();
- wei2 = 0;
- }else if(i>500 &&i<1000)
- {
- wei2 = 1;
- P2 = duanma1[s%10]; // 显示对应的数字或字符,这里假设每个数码管显示的是其索引值
- Delay3ms();
- wei2 = 0;
- }
-
-
-
-
- wei3 = 1;
- P2 = duanma[f/10]; // 显示对应的数字或字符,这里假设每个数码管显示的是其索引值
- Delay3ms();
- wei3 = 0;
-
-
- wei4 = 1;
- P2 = duanma[f%10]; // 显示对应的数字或字符,这里假设每个数码管显示的是其索引值
- Delay3ms();
- wei4 = 0;
- // wei1 = 1;
- // wei2 = 0;
- // wei3 = 0;
- // wei4 = 0;
- // P2 = duanma[0];
- // Delay2us();
- // wei1 = 0;
- // wei2 = 1;
- // wei3 = 0;
- // wei4 = 0;
-
- // P2 = duanma[1];
-
- //
- // Delay2us();
- // wei1 = 0;
- // wei2 = 0;
- // wei3 = 1;
- // wei4 = 0;
- // if(i<=10)
- // {
- // P2 = duanma[f/10];
- // }else
- // {
- // P2 = duanma1[f/10];
- // }
- //
- // Delay2us();
- // wei1 = 0;
- // wei2 = 0;
- // wei3 = 0;
- // wei4 = 1;
- // P2 = duanma[f%10];
- // Delay2us();
- //
- // P2 = 0xff;
- // Delay2us();
- }
- }
-
-
- void Timer0_Isr(void) interrupt 1
- {
- i++;
- if(i==1000)
- {
- m++;
- i=0;
- if(m==60)
- {
- f++;
- m=0;
- if(f==60)
- {
- s++;
- f=0;
- if(s==24)
- {
- s=0;
- }
- }
- }
- }
-
- }
复制代码
代码简单
|