?? 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.
//============================================================================
//============================================================================
// 工程名稱:electronicbook.spj
// 功能描述:利用61板外擴存儲器進行讀寫書的資源,這個電子書主要有兩部分的功能:
// 液晶顯示功能
// 語音朗讀功能
// 按鍵控制
//
// IDE 環(huán)境:SUNPLUS u'nSP IDE 1.8.4(or later)
//
// 涉及的庫:SACMV25.lib,CMacro.lib,clib100.lib
//
// 組成文件: main.c
// Readbook.c/relist.c/ISR.asm/spce.asm/SP_lib.asm/
// SamsungFlashV11.asm/Resource.asm/SamsungFlashV11.asm
// /Splc501var.asm/Resource.inc/A2000.h等
//
// 硬件連接: LCD D0~D7接IOA8~IOA15
// LCD EP 接IOB6
// LCD RWP 接IOB5
// LCD A0 接IOB4
// LCD /CS1 接IOB9 或接地也可
// 維護記錄: 2005.04.06 第1版本
// 開發(fā)者: Hongyan.Feng (hongyan@.sunnorth.com.cn (2963))
//
// 日期: 2005-4-06
//===============================================================================
//================================================================================
// 文件名稱: main.c
// 功能描述: 主程序、開機顯示動畫圖片程序、書的內(nèi)容顯示程序、讀取存儲器顯示內(nèi)容等
// 維護記錄: 2005-4-16 v1.0
//================================================================================
#include "lab_parameter.h" //包含的庫函數(shù)
#include "sacmv32.h"
#include "hardware.h"
#define P_IOA_Data (volatile unsigned int *)0x7000
#define P_IOA_Buffer (volatile unsigned int *)0x7001
#define P_IOA_Dir (volatile unsigned int *)0x7002
#define P_IOA_Attrib (volatile unsigned int *)0x7003
#define P_IOB_Data (volatile unsigned int *)0x7005
#define P_IOB_Buffer (volatile unsigned int *)0x7006
#define P_IOB_Dir (volatile unsigned int *)0x7007
#define P_IOB_Attrib (volatile unsigned int *)0x7008
#define P_Watchdog_Clear (volatile unsigned int *)0x7012
#define P_INT_Ctrl (volatile unsigned int *)0x7010
#define P_INT_Clear (volatile unsigned int *)0x7011
#define KEY_ALL 0xfe00
extern BIRD_Frame0; //鳥飛翔的各動作的外部申明
extern BIRD_Frame1;
extern BIRD_Frame2;
extern BIRD_Frame3;
extern BIRD_Frame4;
extern BIRD_Frame5;
extern BIRD_Frame6;
void ReadDisplay(void);
void ScreenAegis(void);
void Readbook(void);
void Readdata(void);
unsigned SearchSnd(unsigned uiBookIdx ,unsigned uiPageIdx,long *Text_StartAddr,long *Text_EndAddr,long *Voice_StartAddr,long *Voice_EndAddr);
//unsigned int GetKey(void);
int r=98;
int t=48;
int R_CharCode,flag=0;
int pno = 0;
int bno = 0;
//char bna[50];
unsigned KeyValue=0;
int k = 0;
int ReadBook_Flag=0;
char string[400]; //定義一個數(shù)組準備存放文本資源
//======================================================================
// 語法格式: int main()
// 功能描述: 按鍵讀書程序
// 參數(shù): 無
// 返回值: 無
//======================================================================
int main()
{
long Voice_StartAddr,Voice_EndAddr,Text_StartAddr,Text_EndAddr; //4.3
unsigned int ddd;
KeyValue=0;
StartDisplay(); //開機顯示
while(1)
{
SP_INT_IRQ6();
switch(KeyValue){
case 0x0000:// if(flag<0) ScreenAegis(); //沒有鍵按下
break;
case 0x0100: //1鍵按下
break;
case 0x0200: //2鍵按下
t+=10; //字母上移
if(t>200) //換屏
{
FG_ClearScreen(0);
ReadBook_Flag = 1;
Readdata();
t = 48;
}
ReadDisplay();
break;
case 0x0400: //3鍵按下
bno = 0;
t-=10; //字母下移
ReadDisplay();
break;
case 0x0800: //4鍵按下
Readdata();
ReadDisplay(); //顯示文字
break;
case 0x1000: //5鍵按下
Readbook(); //朗讀當前頁的內(nèi)容
Clear_Watch_Dog();
break;
case 0x2000: //6鍵按下
pno++; //翻到下頁
if((pno==2&&bno==0)||(pno==3&&bno==1)) //當?shù)阶詈笠豁摃r,翻到第一頁
{
pno = 0;
}
Readdata(); //讀資源
ReadDisplay(); //顯示
break;
case 0x4000: //7鍵按下
pno--; //翻到上一頁
if(pno<0&&bno==0)
{
pno = 1; //當翻到第一頁時,跳到最后一頁
}
if(pno<0&&bno==1)
{
pno = 2;
}
Readdata();
ReadDisplay();
break;
case 0x8000: //8鍵按下
bno++;
if(bno==2)
{
bno = 0;
}
Readdata();
ReadDisplay();
break;
default: break;
}
}
}
//=================================================================================================
//語法格式:StartDisplay()
//功能:開機顯示動畫圖片
//參數(shù):無
//返回值:無
//日期:2005.04.06
//=================================================================================================
StartDisplay()
{
int i,j;
int x=60;
Init_sys(); // 初始化系統(tǒng)時鐘
FG_InitGraphic(); //初始化LCDIO口 函數(shù)定義在Splc501sys.asm
FG_SetBMPMode(DG_BMP_COVER); //設(shè)置位圖模式 函數(shù)定義在Splc501sys.asm
/* SACM_A2000_Initial(Auto); //A2000播放初始化 函數(shù)包含在Sacmv32.lib
SACM_A2000_Play(0,DAC1+DAC2,Ramp_Up_On+Ramp_Dn_On); //A2000語音播放 函數(shù)包含在Sacmv32.lib*/
for(k=0;k<10&&KeyValue==0;k++)
{
/* if((SACM_A2000_Status()&0x01) == 0) //判斷語音是否播放結(jié)束 函數(shù)包含在Sacmv32.lib
SACM_A2000_Play(0,DAC1+DAC2,Ramp_Up_On+Ramp_Dn_On);//語音播放 函數(shù)包含在Sacmv32.lib*/
x=x+10;
if(x==128) x=60;
FG_PutBitmap(&BIRD_Frame0,x,60); //顯示第一個動作
for(j=0;j<=2;j++) //延時 保持整個顯示屏點亮
{
for(i=0;i<0xffff;i++)
Clear_Watch_Dog(); //清看門狗 函數(shù)定義在Splc501sys.asm
}
FG_ClearScreen(0);
x+=3;
if(x==128) x=60;
FG_PutBitmap(&BIRD_Frame1,x,60); //顯示第二個動作
for(j=0;j<=2;j++) //延時 保持整個顯示屏點亮
for(i=0;i<0xffff;i++)
Clear_Watch_Dog(); //清看門狗 函數(shù)定義在Splc501sys.asm
FG_ClearScreen(0);
x+=3;
if(x==128) x=60;
FG_PutBitmap(&BIRD_Frame2,x,60); //顯示第三個動作
for(j=0;j<=2;j++) //延時 保持整個顯示屏點亮
for(i=0;i<0xffff;i++)
Clear_Watch_Dog(); //清看門狗 函數(shù)定義在Splc501sys.asm
FG_ClearScreen(0);
x+=3;
if(x==128) x=60;
FG_PutBitmap(&BIRD_Frame3,x,60); //顯示第四個動作
for(j=0;j<=2;j++) //延時 保持整個顯示屏點亮
for(i=0;i<0xffff;i++)
Clear_Watch_Dog(); //清看門狗 函數(shù)定義在Splc501sys.asm
FG_ClearScreen(0);
x+=3;
if(x==128) x=60;
FG_PutBitmap(&BIRD_Frame4,x,60); //顯示第五個動作
for(j=0;j<=2;j++) //延時 保持整個顯示屏點亮
for(i=0;i<0xffff;i++)
Clear_Watch_Dog(); //清看門狗 函數(shù)定義在Splc501sys.asm
FG_ClearScreen(0);
x+=3;
FG_PutBitmap(&BIRD_Frame5,x,60); //顯示第六個動作
for(j=0;j<=2;j++) //延時 保持整個顯示屏點亮
for(i=0;i<0xffff;i++)
Clear_Watch_Dog(); //清看門狗 函數(shù)定義在Splc501sys.asm
FG_ClearScreen(0);
x+=3;
if(x==128) x=60;
FG_PutBitmap(&BIRD_Frame6,x,60); //顯示第六個動作
for(j=0;j<=2;j++) //延時 保持整個顯示屏點亮
for(i=0;i<0xffff;i++)
Clear_Watch_Dog(); //清看門狗 函數(shù)定義在Splc501sys.asm
FG_ClearScreen(0); //清屏 函數(shù)定義在Splc501sys.asm
SP_INT_IRQ6(); //允許鍵盤中斷
}
}
//===================================================================================================
//語法格式:void ScreenAegis(void)
//功能:屏幕保護動畫圖片顯示
//參數(shù):無
//返回值:無
//日期:2005.04.06
//====================================================================================================
void ScreenAegis(void)
{
int i,j;
int x=0;
Init_sys(); //初始化字庫 函數(shù)定義在Splc501sys.asm
FG_InitGraphic(); //初始化LCDIO口 函數(shù)定義在Splc501sys.asm
while(!KeyValue)
{
FG_ClearScreen(0);
if(x==4)x=0;
FG_PutStr("SUNPLUS",x,95,60);
FG_PutStr("Technology for ",x,125,40);
FG_PutStr("Easy Living",x,85,20);
for(j=0;j<=4;j++) //延時 保持整個顯示屏點亮
for(i=0;i<0xffff;i++)
Clear_Watch_Dog(); //清看門狗 函數(shù)定義在Splc501sys.asm
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -