EC_MS51_ARGB_RainBow_Wave_Effect_V1.00.zip
(1.46 MB)
程序中设定系统时钟HIRC 为24 MHz 以及SPI 时钟除频值为8,由此可计算出SPI 时钟速率为 3 MHz,这代表一个SPI 时钟为 0.333 us。换句话说,逻辑’0’ 映像为SPI 位样式为‘1000’; 逻辑’1’ 映像为SPI 位样式为‘1110’,亦即3 个字节的RGB 数据格式可转化成12 个字节的SPI 数据格式。
/*---------------------------------------------------------------------------------------------------------*/
/* */
/* Copyright(c) 2020 Nuvoton Technology Corp. All rights reserved. */
/* */
/*---------------------------------------------------------------------------------------------------------*/
//***********************************************************************************************************
// Website: http://www.nuvoton.com
// E-Mail : MicroC-8bit@nuvoton.com
//***********************************************************************************************************
#include "MS51_32K.h"
#include "Nuvoton_Stripe.h"
/* Data Flash */
#define Addr_DataFlash 0x3F80
void Timer3_ISR(void) interrupt 16 // Vector [url=home.php?mod=space&uid=72445]@[/url] 0x83
{
_push_(SFRS);
clr_T3CON_TF3;
/* Add time counter */
TOPDOWNTimeCounter++;
_pop_(SFRS);
}
void Timer3_1ms_initial(void)
{
SFRS = 0x00;
T3CON &= 0xF8;
clr_T3CON_TF3;
RL3 = 0x40;
RH3 = 0xA2;
// RH3 = 0x82;
set_T3CON_TR3;
set_EIE1_ET3;
set_IE_EA;
}
void SPI_Init()
{
set_SPSR_DISMODF; // SS General purpose I/O ( No Mode Fault )
clr_SPCR_SSOE;
clr_SPCR_LSBFE; // MSB first
clr_SPCR_CPOL; // The SPI clock is low in idle mode
clr_SPCR_CPHA; // The data is sample on the first edge of SPI clock
set_SPCR_MSTR; // SPI in Master mode
SPICLK_FSYS_DIV8; // Select SPI clock
set_SPCR_SPIEN; // Enable SPI function
clr_SPSR_SPIF;
}
void main(void)
{
MODIFY_HIRC(HIRC_24);
/* Set LED output */
P00 = 1;
P00_INPUT_MODE;
ENABLE_P00_PULLDOWN;
SPI_Init();
/* Enable Timer3 to add time counter */
Timer3_1ms_initial();
/* Init LED to all disable */
Disable_TOPDOWN();
SPI_Send();
while (1)
{
/* Control LED */
{
RainbowWave_TOPDOWN();
SPI_Send();
}
}
}
|