?? main.c
字號:
#include "config.h"
#include "Pig.h"
/****************************************************************************
* 名稱:DelayNS()
* 功能:長軟件延時
* 入口參數:dly 延時參數,值越大,延時越久
* 出口參數:無
****************************************************************************/
/*void delay(uint32 dly)
{ uint32 i;
for(; dly>0; dly--)
for(i=0; i<500; i++);
}*/
__inline void enable_irq()
{
uint8 tmp;
__asm
{
MRS tmp,CPSR
BIC tmp,tmp,#0x80
MSR CPSR_c,tmp
}
}
__inline void disable_irq()
{
uint8 tmp;
__asm
{
MRS tmp,CPSR
ORR tmp,tmp,#0x80
MSR CPSR_c,tmp
}
}
__inline void enable_frq()
{
uint8 tmp;
__asm
{
MRS tmp,CPSR
BIC tmp,tmp,#0x40
MSR CPSR_c,tmp
}
}
__inline void disable_frq()
{
uint8 tmp;
__asm
{
MRS tmp,CPSR
ORR tmp,tmp,#0x40
MSR CPSR_c,tmp
}
}
//**************lcd programme start*****************************
#define wr (1<<8)
#define rd (1<<9)
#define cd (1<<10)
void delay(int c)
{
int j;
while(c--)
for(j=500;j>0;j--)
;
}
uint8 rd_state() //讀狀態
{
uint8 temp;
IODIR=0x700;
IOSET=cd;
IOCLR=rd;
temp=IOPIN;
IOSET=rd;
return(temp);
}
void rd_enable() //等待可讀寫
{
uint8 temp;
temp=rd_state();
while((temp&0x03)!=0x03)
temp=rd_state();
}
void rd_auto() //等待自動讀寫
{
uint8 temp;
temp=rd_state();
while((temp&0x04)!=0x04)
temp=rd_state();
}
void wr_auto() //等待自動寫
{
uint8 temp;
temp=rd_state();
while((temp&0x08)!=0x08)
temp=rd_state();
}
/*寫命令、寫數據命令*********************
數據1、數據2、命令、參數個數*************
*****************************************/
void wr_data(char data1,char data2,char cmd,char num)
{
char temp;
temp=num;
if(temp==2)
{
rd_enable();
IODIR=0x7ff;
IOCLR=cd;
IOCLR=0xff;
IOSET=data1;
IOCLR=wr;
IOSET=wr;
}
if(temp==2||temp==1)
{
rd_enable();
IODIR=0x7ff;
IOCLR=cd;
IOCLR=0xff;
IOSET=data2;
IOCLR=wr;
IOSET=wr;
}
rd_enable();
IODIR=0x7ff;
IOSET=cd;
IOCLR=0xff;
IOSET=cmd;
IOCLR=wr;
IOSET=wr;
}
char rd_data() //讀數據
{
char temp;
rd_enable();
IODIR=0x700;
IOCLR=cd;
IOCLR=rd;
temp=IOPIN;
IOSET=rd;
return(temp);
}
void lcd_init()
{
IODIR=cd|rd|wr;
IOSET=cd|rd|wr;
wr_data(0x00,0x00,0x40,0x02); //設置文本顯示首地址
wr_data(0x22,0x00,0x41,0x02); //設置文本顯示寬度
wr_data(0x40,0x01,0x42,0x02); //設置圖形顯示首地址
wr_data(0x14,0x00,0x43,0x02); //設置圖形顯示寬度
wr_data(0x00,0x00,0xa1,0x00); //光標形狀設置
wr_data(0x00,0x00,0x80,0x00); //顯示方式設置,“或”
wr_data(0x00,0x00,0x9c,0x00); //顯示開關設置
}
//******************lcd programme end*******************************
/****************************************************************************
* 名稱:main()
* 功能:
****************************************************************************/
int main(void)
{
uint16 i;
lcd_init();
wr_data(0xe0,0x01,0x24,0x02); //設置寫地址
wr_data(0x00,0x00,0xb0,0x00); //設置自動寫方式
for(i=0;i<2560;i++)
{
rd_enable();
IODIR=0x7ff;
IOCLR=cd;
IOCLR=0xff;
IOSET=Pig[i];
IOCLR=wr;
IOSET=wr;
}
wr_data(0x00,0x00,0xb2,0x00); //自動寫結束
while(1);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -