/*******************************************************************/
#include "tms320uc5402.h"
/*******************************************************************/
ioport short port8002; //写lcd指令地址
ioport short port8003; //写lcd数据地址
void sys_ini() //系统初始化子程序
{
asm(" ssbx INTM"); //禁止所有可屏蔽中断
PMST&=0x00FF; //(DRAM映射到程序空间和数据空间)向量表映射到0x0080空间
//BSCR=0x8800; //32k分区,ps~ds插入一个等待周期
SWWSR=0x7000; //io空间7个等待周期,程序与数据空间0个等待周期
//SWCR=0x0000; //等待状态倍率为1
CLKMD=0x0000; //设置pll为div模式
while(CLKMD==0x0001); //等待设置完成
{
}
CLKMD=0x37FA; //CLKOUT=(3+1)*CLKIN=40M,自动延时最长时间
//CLKMD=0x17FA; //CLKOUT=(1+1)*CLKIN=20M,自动延时最长时间
IMR=0x0000; //禁止所有可屏蔽中断
IFR|=IFR; //清除所有中断标志位
}
void delay_ms() //延时40ms
{
unsigned int k;
for(k=0;k<60000;k++);
}
void delay_us() //延时100us
{
unsigned int k;
for(k=0;k<200;k++);
}
void lcd_show(char a[])
{
int x;
char * string=a;
for(x=0;x<strlen(a);x++)
{
port8003=* string;
string++;
delay_us();
}
}
void lcd_ini()
{
delay_ms(); //延时40ms
port8002=0x0030; //8位控制界面,基本指令集
delay_us();
port8002=0x0030; //8位控制界面,基本指令集
delay_us();
port8002=0x000C; //整体显示,显示游标 ,显示游标位置
delay_us();
port8002=0x0001; //清除显示
delay_ms();
port8002=0x0006; //光标右移
delay_us();
}
void main(void)
{
char b[]="北京精议达盛科技有限公司欢迎您!";
sys_ini();
lcd_ini();
lcd_show(b);
for(;;)
{
}
}