📄 main.c
字号:
//========================================================================
// The information contained herein is the exclusive property of
// Sunnnorth Technology Co. And shall not be distributed, reproduced,
// or disclosed in whole in part without prior written permission.
// (C) COPYRIGHT 2003 SUNNORTH TECHNOLOGY CO.
// ALL RIGHTS RESERVED
// The entire notice above must be reproduced on all authorized copies.
//========================================================================
//============================================================
// 工程名称: ex5_LCD_DynamicGraphicMusic
// 实现功能: 《实验仪指导书》综合实验5
// SPLC501液晶显示模组驱动演示 音乐动画
// 涉及的库: CMacro1016.lib
// Sacmv26e.lib
// 组成文件: main.c/PicData.c
// SPLC501User.c
// SPLC501Driver_IO.asm/DataOSforLCD.asm
// SPLC501User.h/SPLC501Driver_IO.inc/PicData.h
// 硬件连接: LCD DB0~DB7接IOA0~IOA7
// LCD EP 接IOB5
// LCD RW 接IOB4
// LCD A0 接IOB3
// LCD CS 接IOB2 或接地也可
//
// 维护记录: 2005-8-12 V1.0
//
//===============================================
//========================================================================
// 文件名称: main.c
// 功能描述: LCD显示及音乐播放主程序文件
// 维护记录: 2005-10-16 v1.0
//========================================================================
#define P_SystemClock (volatile unsigned int *)0x7013
#define P_INT_Ctrl (volatile unsigned int *)0x7010
#define P_INT_Clear (volatile unsigned int *)0x7011
#define P_INT_Ctrl_New (volatile unsigned int *)0x702D
#define P_Watchdog_Clear (volatile unsigned int *)0x7012
#include "PicData.h"
#include "SPLC501User.h"
#include "A2000.h"
const unsigned int* BMP_Cartoon3[] = //动画帧数据链表(小人)
{(unsigned int*)9,(unsigned int*)encoding_00,(unsigned int*)encoding_01,
(unsigned int*)encoding_02,(unsigned int*)encoding_03,(unsigned int*)encoding_04,
(unsigned int*)encoding_05,(unsigned int*)encoding_06,(unsigned int*)encoding_07,
(unsigned int*)encoding_09};
//****上面的链接第一个值为表中有效的图像帧数,后面跟着都是各帧图像的字模数据首地址****//
unsigned int IRQ1KHz_Couter; //定义一个全局的变量,作为计数的Counter
//========================================================================
// 语法格式: int main(void)
// 实现功能: 主程序
// 参数: 无
// 返回值: 无
//========================================================================
int main(void)
{
unsigned int uiTemp;
int i=1;
LCD501_Init(0x0000); //初始化液晶
SACM_A2000_Initial(1); //初始化语音播放,为自动播放
LCD501_SetPaintMode(4); //设置LCD显示模式
uiTemp = *P_INT_Ctrl_New; //...
uiTemp = uiTemp|0x0010;
*P_INT_Ctrl_New = uiTemp; //打开1KHz中断
__asm("IRQ ON"); //打开IRQ中断
LCD501_Bitmap(16,0,(unsigned int *)BMP_Cartoon3[1]); //先显示第一帧
IRQ1KHz_Couter=0; //计数器清零
SACM_A2000_Play(0,3,3);
while(1)
{
if(IRQ1KHz_Couter>=300) //到达预定时延时
{
IRQ1KHz_Couter=0; //清Counter
LCD501_Bitmap(16,0,(unsigned int *)BMP_Cartoon3[i]); //显示第i帧图像
i++; //自加
if(i==10) //到达上限,则m变为负数
{
i=1; //i重新指为1
}
}
if((SACM_A2000_Status()&0x0001)==0) //判断,播放结束,则调用下列代码
{
SACM_A2000_Stop(); //把上次的停止
SACM_A2000_Play(0,3,3); //重新播放
}
*P_Watchdog_Clear = 0x0001; //清看门狗
}
}
//
void BMP_Play_IRQ_Service(void)
{//动画显示程序中,在1KHz中断需要调用的子函数,作为计数用
IRQ1KHz_Couter++; //Counter自加1
SACM_A2000_ServiceLoop(); //在中断服务程序中完成语音循环服务程序
}
//========================================================================
// 语法格式: void IRQ4(void)
// 实现功能: IRQ4中断服务程序
// 参数: 无
// 返回值: 无
//========================================================================
void IRQ4(void)__attribute__((ISR));
void IRQ4(void)
{
if(*P_INT_Ctrl&0x0010)
{
*P_INT_Clear = 0x0010;
BMP_Play_IRQ_Service(); //调用动画显示的中断服务程序
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -