/*
19264测试程式,stm8207s8
*/
#include "stm8s207r.h" /* Registers and memory mapping file. */
#define E_H PA_ODR |= (1<<4)
#define E_L PA_ODR &= ~(1<<4)
#define RW_H PA_ODR |= (1<<5)
#define RW_L PA_ODR &= ~(1<<5)
#define DI_H PA_ODR |= (1<<6)
#define DI_L PA_ODR &= ~(1<<6)
#define CSB_H PG_ODR |= 0X02
#define CSB_L PG_ODR &= ~0X02
#define CSA_H PG_ODR |= 0X01
#define CSA_L PG_ODR &= 0XFE
#define RES_H PE_ODR |= 0X01
#define RES_L PE_ODR &= ~0X01
#define DB PB_ODR
#define ON 1
#define OFF 0
#define CMD 0
#define DAT 1
#define RIGHT 0
#define MID 1
#define LEFT 2
#define u_char unsigned char
#define ADD_Y0 0x40
#define ADD_X0 0xB8
#define DISP_SL0 0xC0
#define DISP_ON 0x3F
#define DISP_OFF 0x3E
#define OSC 8000000L
#if(OSC==1000000)
#define NOP 1
#endif
#if(OSC==8000000)
#define NOP 9
#endif
u_char const chars[8][64]={
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0xE0,0xE0,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x10,0x30,0x30,0x30,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x18,0x1C,0x1C,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0x80,0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xF7,0xFF,0xFF,0xFF,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0xF8,0xFE,0xFC,0x38,0x10,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0xE2,0xFE,0xFE,0xFE,0x7A,0x32,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x03,0x03,0x03,0x03,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xF0,0x7C,0x3F,0x0F,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x18,0x70,0xE0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x3F,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0xC0,0xE0,0xF0,0xF8,0xDE,0xC7,0xC3,0xC1,0xC0,0xC0,0xC0,0xC0,0xE0,0x60,0x60,0x60,0x60,0x60,0x20,0x20,0x30,0x33,0x3F,0x7F,0xFE,0xFC,0xF0,0x00,0x00,0x00,0x80,0xE0,0xF8,0xFE,0x3F,0x0F,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x01,0x07,0x07,0x07,0x03,0x03,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x83,0xC3,0xF1,0x78,0x3C,0x1E,0x0F,0x03,0x01,0x00,0x00,0x00,0x00,0x40,0x40,0xC0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xC0,0xF0,0xFF,0xFF,0x3F,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x18,0x0C,0x06,0x07,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x1F,0x1F,0x0F,0x07,0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"动",2*/
};
u_char const chars1[8][64]={
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x60,0xC0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xF0,0xF0,0xE0,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x04,0x0C,0x04,0x04,0x04,0x04,0x04,0x04,0xFC,0xFC,0xFC,0x7C,0x04,0x04,0x04,0x04,0x06,0x07,0x07,0x07,0x06,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x1F,0x7F,0x3F,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xF0,0x3F,0x0F,0x07,0x01,0x00,0x00,0x00,0x00,0x80,0xC0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFE,0xFF,0x7F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x03,0x03,0x03,0x03,0xE1,0xF9,0xF9,0xF1,0x31,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0xF1,0xFD,0xF9,0x79,0x31,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xF0,0xFE,0xFF,0xFF,0x17,0x10,0x10,0x10,0x10,0x10,0x10,0xF8,0xFC,0xFC,0x38,0x10,0x00,0x00,0x00,0x80,0xF0,0xFE,0x3F,0x0F,0x03,0x00,0x00,0x80,0xF0,0xFE,0xFE,0x3C,0x18,0x08,0x00,0x00,0xC0,0xF8,0x7F,0x1F,0x07,0x01,0x00,0x00,0x00,0xE0,0xFC,0xF8,0xF0,0x30,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0xC0,0xF0,0x7C,0x1F,0x0F,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x40,0xE0,0xF0,0xF8,0xFE,0xE7,0xE3,0x60,0x60,0x60,0x20,0xE0,0xFC,0x7F,0x1F,0x07,0x01,0x00,0x00,0x70,0xF8,0xFE,0xE7,0x61,0x60,0x20,0x20,0x20,0xA0,0xF0,0xFE,0x7F,0x1F,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x03,0x01,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x03,0x01,0x01,0x00,0x00,0xC0,0xF0,0x7C,0x1F,0x07,0x01,0x60,0xC0,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0xC0,0xF0,0x7E,0x1F,0x07,0x01,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x7F,0x7F,0x3F,0x00,0x80,0xC0,0xE0,0xF0,0xDC,0xCF,0xC3,0xC1,0xE0,0xE0,0x60,0x60,0x20,0x23,0x3F,0xFE,0xFC,0xF0,0xC0,0x00,0xC0,0xE0,0xF8,0xDE,0xC7,0xC1,0xC0,0xC0,0xC0,0x40,0x60,0x61,0x2F,0xFE,0xFC,0xF0,0xE0,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x07,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x07,0x07,0x03,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,0x03,0x00,0x00,0x00,0x03,0x03,0x03,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x07,0x00,0x00,0x00,0x00},/*"磁",1*/
};
u_char const chars2[8][64]={
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xF0,0xE0,0xC0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xF0,0xF0,0x60,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xF0,0xE0,0xE0,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xF0,0x78,0x3E,0x1F,0x07,0x03,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0xFC,0xFC,0xF8,0x18,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFC,0xFC,0xF8,0x18,0x08,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x3F,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x0C,0x06,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0xE0,0xF8,0xFE,0xFC,0x3C,0x18,0x00,0x20,0x7F,0xFF,0x7F,0x20,0x20,0x20,0x20,0x3F,0x3F,0x3F,0x20,0x20,0x20,0x20,0xFF,0x7F,0x7F,0x00,0x00,0x00,0x00,0x80,0xF0,0xFF,0xFF,0x1F,0x11,0x10,0x10,0x10,0x10,0x10,0x90,0xF0,0xF0,0xF8,0x1C,0x1F,0x1C,0x18,0x10,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xE0,0xF8,0x3C,0xFF,0xFF,0xFF,0x01,0x00,0x00,0x00,0x00,0x00,0x60,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x30,0x38,0x38,0x30,0x20,0x40,0xE0,0x78,0x1F,0x07,0x01,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x60,0x30,0x1C,0x06,0x03,0x01,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xF8,0xF0,0xF0,0x20,0x20,0x20,0x20,0x20,0x30,0xF8,0xFC,0xF8,0x30,0x00,0x00,0x07,0x01,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF8,0x80,0x00,0x00,0xF0,0xFF,0xFF,0x1F,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0x3F,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x80,0xC0,0xC0,0x60,0x30,0x18,0x0C,0x00,0x00,0x00,0x03,0xDF,0xFF,0xFC,0xFF,0xFF,0x8F,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x80,0xE0,0x78,0x1F,0x0F,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x0F,0x1F,0x3F,0x0F,0x07,0x81,0x80,0xC0,0xE0,0xF0,0x70,0x38,0x3C,0x1E,0x0F,0x07,0x03,0x03,0x07,0x1F,0x3F,0x7E,0xFC,0xF8,0xF0,0xE0,0xE0,0xC0,0x80,0x80,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x1F,0x0F,0x00,0x00,0x04,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x08,0x08,0x0C,0x04,0x06,0x07,0x03,0x03,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x03,0x01,0x00,0x00,0x00,0x00,0x00},/*"微",0*/
};
void vDelay(unsigned int time_uS)
{
while(time_uS--)
{
_asm("nop\n");
//asm ("nop"::);
// asm ("nop"::);
}
}
void vLCD_WR(u_char cDatas,
u_char cSl_chip,
u_char cDat_type)
{
E_L;
RW_L;
if(cSl_chip==RIGHT)
{
CSB_L;
CSA_H;
}else if(cSl_chip==MID)
{
CSB_H;
CSA_L;
}else
{
CSB_L;
CSA_L;
}
if(cDat_type==CMD)
{
DI_L;
}else
{
DI_H;
}
E_H;
DB=cDatas;
vDelay(1*NOP);
E_L;
RW_H;
E_H;
CSB_H;
CSA_H;
}
u_char cLCD_RD( u_char cSl_chip,
u_char cDat_type )
{
u_char m_cDatas;
E_L;
RW_H;
if(cSl_chip==RIGHT)
{
CSB_L;
CSA_H;
}else if(cSl_chip==MID)
{
CSB_H;
CSA_L;
}else
{
CSB_L;
CSA_L;
}
if(cDat_type==CMD)
{
DI_L;
}else
{
DI_H;
}
E_H;
vDelay(1*NOP);
m_cDatas=DB;
RW_L;
E_H;
CSB_H;
CSA_H;
return(m_cDatas);
}
/*
void vLCD_Init(void)
{
u_char m_cAdd_X,m_cAdd_Y,m_cChip;
u_char m_cCount,m_Tmp;
u_char m_cDisp_mod,m_cDisp_sl;
u_char m_cmd=0;
u_char m_dat=1;
DDRA=0xFF; //端口配制为输出
DDRB=0xFF;
DDRD=0xFF;
PORTA=0xFF;
RES_H;
for(m_cChip=0;m_cChip<3;m_cChip++)
{
m_cAdd_Y =ADD_Y0;
m_cAdd_X =ADD_X0;
m_cDisp_sl =DISP_SL0;
m_cDisp_mod =DISP_ON;
vLCD_WR(m_cDisp_mod,m_cChip,m_cmd);
vLCD_WR(m_cDisp_sl,m_cChip,m_cmd);
for(m_Tmp=0;m_Tmp<8;m_Tmp++)
{
vLCD_WR(m_cAdd_Y,m_cChip,m_cmd);
vLCD_WR(m_cAdd_X,m_cChip,m_cmd);
for(m_cCount=0;m_cCount<64;m_cCount++)
{
vLCD_WR(0x00,m_cChip,m_dat); //清屏操作
}
m_cAdd_X++;
}
}
}
*/
void GPIO_Init(void)
{
PB_DDR = 0xff;
PB_CR1 = 0xff;
PB_CR2 = 0xff;
PA_DDR |= (1<<4)|(1<<5)|(1<<6); /* Output. */
PA_CR1 |= (1<<4)|(1<<5)|(1<<6); /* PushPull. */
PA_CR2 |= (1<<4)|(1<<5)|(1<<6); /* Output speed up to 10MHz. */
PG_DDR |= 0X03;
PG_CR1 |= 0X03;
PG_CR2 |= 0X03;
PE_DDR |= 0X01;
PE_CR1 |= 0X01;
PE_CR2 |= 0X01;
}
/* -------------------------------------------------------------------------- */
/* ROUTINE NAME: CLK_Init */
/* INPUT/OUTPUT: None. */
/* DESCRIPTION: Initialize the clock source */
/* -------------------------------------------------------------------------- */
void CLK_Init(void)
{
/* Configure HSI prescaler*/
CLK_CKDIVR &= ~0x10; /* 01: fHSI= fHSI RC output/2. */
/* Configure CPU clock prescaler */
CLK_CKDIVR |= 0x01; /* 001: fCPU=fMASTER/2. */
}
int main(void)
{
u_char m_cAdd_X,m_cAdd_Y,m_cChip;
u_char m_cDisp_mod,m_cDisp_sl;
u_char m_cCount,m_Tmp;
u_char *pcChars[3];
u_char m_cmd=0;
u_char m_dat=1;
// vLCD_Init;
CLK_Init();
GPIO_Init();
RES_H;
pcChars[0]=chars[0];
pcChars[1]=chars1[0];
pcChars[2]=chars2[0];
for(m_cChip=0;m_cChip<3;m_cChip++)
{
m_cAdd_Y =ADD_Y0;
m_cAdd_X =ADD_X0;
m_cDisp_sl =DISP_SL0;
m_cDisp_mod =DISP_ON;
vLCD_WR(m_cDisp_mod,m_cChip,m_cmd);
vLCD_WR(m_cDisp_sl,m_cChip,m_cmd);
for(m_Tmp=0;m_Tmp<8;m_Tmp++)
{
vLCD_WR(m_cAdd_Y,m_cChip,m_cmd);
vLCD_WR(m_cAdd_X,m_cChip,m_cmd);
for(m_cCount=0;m_cCount<64;m_cCount++)
{
vLCD_WR(*(pcChars[m_cChip]++),m_cChip,m_dat);
}
m_cAdd_X++;
}
}
while(1);
return(0);
}
这个代码却非常的快。 |