找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1619|回复: 0
收起左侧

stm8s单片机16*16*16光立方程序

[复制链接]
ID:542680 发表于 2019-7-4 17:02 | 显示全部楼层 |阅读模式
#include <stdio.h>
#include "M051Series.h"
#include "disdrv.h"
#include "time2.h"
#include "time1.h"
#include "video.h"
#include "snake.h"
#include "muart1.h"
#define PLLCON_SETTING      CLK_PLLCON_50MHz_HXT
#define PLL_CLOCK           50000000


#define MFLAG 1
#define MLAYER 15
u8 flag;
// void test(void)
// {
//         u8 i;
//         while(1)
//         {
//                 if(flag=='L')
//                 {
//                         i = 'M';
//                         UART_Write(UART0,&i,1);
//                 }
//         }
// }

void SYS_Init(void)
{
    CLK->PWRCON |= CLK_PWRCON_IRC22M_EN_Msk; /* Init System Clock * Enable IRC22M clock */
    CLK_WaitClockReady(CLK_CLKSTATUS_IRC22M_STB_Msk);/* Waiting for IRC22M clock ready */
    CLK->CLKSEL0 = CLK_CLKSEL0_HCLK_S_HIRC;/* Switch HCLK clock source to HIRC */
    CLK->PLLCON |= CLK_PLLCON_PD_Msk;  /* Set PLL to Power-down mode and PLL_STB bit in CLKSTATUS register will be cleared by hardware.*/
    CLK->PWRCON |= CLK_PWRCON_XTL12M_EN_Msk | CLK_PWRCON_OSC10K_EN_Msk; /* Enable external 12 MHz XTAL, IRC10K */
    CLK->PLLCON = PLLCON_SETTING; /* Enable PLL and Set PLL frequency */
    CLK_WaitClockReady(CLK_CLKSTATUS_PLL_STB_Msk | CLK_CLKSTATUS_XTL12M_STB_Msk | CLK_CLKSTATUS_IRC10K_STB_Msk); /* Waiting for clock ready */
    CLK->CLKSEL0 = CLK_CLKSEL0_STCLK_S_HCLK_DIV2 | CLK_CLKSEL0_HCLK_S_PLL;  /* Switch HCLK clock source to PLL, STCLK to HCLK/2 */
    CLK->APBCLK = CLK_APBCLK_UART0_EN_Msk; /* Enable peripheral clock */
    CLK->CLKSEL1 = CLK_CLKSEL1_UART_S_PLL; /* Peripheral clock source */
    SystemCoreClockUpdate();  /* Update System Core Clock *User can use SystemCoreClockUpdate() to calculate PllClock, SystemCoreClock and CycylesPerUs automatically. */
}
int main(void)
{   
    SYS_Init();/* Init System, peripheral clock and multi-function I/O */
          disdrv_init();
          Time2_Init();
          Time1_Init();
          uart0_init();
         
                 
                while(1)
                {
                        //test();
//                         //snake_game();
       flash1();                //文字推出显示        
      flash2();    //乱放圆环
                   flash5();    //激光金字塔
             flash6();    //水滴出字
                        flash7();    //四核打印字体
                  flash8();   //:平面摆动
                   flash9();   //烟花
                        flash10();  //雨滴
                  flash3() ;  //万家灯火
                  flash4();          //下雪 雪上升
                         flash11();        //字体摆动        
                        flash12();
                          flash13();
              flash14();
                        //flash15();
                        }
               
}

/*测试灯程序
        #if MFLAG
                                         DIS_LAT(0);
                for(i=0;i<16;i++)
                {
                        write_DM13(0x0000);
                        if(i==MLAYER)write_DM13(j);//
    }
         DIS_LAT(1);
                        for(i=0;i<16;i++)
                        {
                                layer_set(i);
                                CLK_SysTickDelay(50000);
                        }
                                j<<=1;
                        
                #else
                        
                                 DIS_LAT(0);
                for(i=0;i<16;i++)
                {
                        write_DM13(0x0000);
                        if(i==MLAYER )write_DM13(0xffff);///
    }
         DIS_LAT(1);
                        for(i=0;i<16;i++)
                        {
                                layer_set(i);
                                CLK_SysTickDelay(500000);
                        }
                                j<<=1;
               
                #endif
                */
//测试灯程序               
//for(i=1;i<5;i++)
        // check_l ed(i);
                          //check_led(4);

void UART0_IRQHandler(void)
{
                 static uint32_t u32IntSts1;
    if(u32IntSts1&UART_ISR_RDA_INT_Msk)//检查是否接收数据中断,是否接到break信号
                {                        
                                 
                                        flag = UART_READ(UART0);
                }
}


16x16x16cube_v1.rar

304.83 KB, 下载次数: 16, 下载积分: 黑币 -5

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表