main.c

来自「STM8S105S4程序」· C语言 代码 · 共 51 行

C
51
字号
/******************** 2011电子科技协会 ********************
;名称 :数码管显示     
;作者 : 郑品洪
;日期 : 07/25/2011
;描述 : 让所有数码管以动态扫描的形式循环显示0到F
;***********************************************************/
#include <stm8s105s4.h>
#define uchar unsigned char 
#define uint unsigned int
uchar table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};  //0到F代码

void delay(uint a)  //延时子函数
{
    uchar i;
    for(a;a>0;a--)
      for(i=0;i<200;i++);
}
void init(void)     //初始化函数
{
    PB_DDR=0xff;
    PB_CR1=0xff;      //把PB设置为推挽输出
    PB_CR2=0x00;
    
    PC_DDR=0xff;
    PC_CR1=0xff;      //把PC设置为推挽输出
    PC_CR2=0x00;
    
    CLK_SWR=0xe1;      //选内部高速时钟作为主时钟,这是stm8的默认时钟
    CLK_CKDIVR=0x18;    //时钟分频,这里为2MHz,读者可以参考stm8s系列数据参考手册改变频率,并观察数码管显示的变化
}
void main()
{
    uchar i,j,k;
     init();
        while(1)                    //无限循环
  {
        for(i=0;i<16;i++)           //有十六个数要显示
      {
            for(j=0;j<62;j++)          //每个数扫描62次
          {
                for(k=0;k<8;k++)         //8个数码管
        		{
                  PB_ODR=table[i];      //显示第i个数
                  PC_ODR =k*2;          //依次选择第1到第8个数码管
                  delay(2);
        	  }
    		}
    	}
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?