?? key-led-test0.c
字號(hào):
#include <reg51.h>
sfr clock_divider=0xc7;
#define CMD_RESET 0xa4
#define CMD_TSET 0xbf
#define DECODE0 0x80
#define DECODE1 0xc8
#define CMD_READ 0x15
#define UNDECODE 0x90
#define RTL_CYCLE 0xa3
#define RTR_CYCLE 0xa2
#define RTL_UNCYCLE 0xa1
#define RTR_UNCYCLE 0xa0
#define ACTCTL 0x98
#define SEGON 0xe0
#define SEGOFF 0xc0
#define BLINKCTL 0x88
void long_delay(void);
void short_delay(void);
void delay10ms(unsigned char );
void write7279(unsigned char , unsigned char );
unsigned char read7279(unsigned char );
void send_byte( unsigned char );
unsigned char receive_byte(void);
sbit cs=P1^3;
sbit clk=P1^2;
sbit key=P1^1;
sbit dat=P1^0;
unsigned long kk,j,wait_cnter;
unsigned char key_number;
main()
{ clock_divider=4;
key_number=0xff;
kk=0x2000;
//while(1)
while(kk--) ;
send_byte(CMD_RESET);
cs=1;
send_byte(CMD_TSET);
cs=1;
for(j=0;j<3;j++)
{
delay10ms(100);
}
send_byte(CMD_RESET);
cs=1;
write7279(BLINKCTL,0xfc);
write7279(UNDECODE,0x08);
write7279(UNDECODE+1,0x08);
do
{
if(!key)
{
key_number=read7279(CMD_READ);
write7279(DECODE1+1,key_number/16);
write7279(DECODE1,key_number&0x0f);
while(!key);
wait_cnter=0;
}
wait_cnter++;
}while(wait_cnter<0x30000);
// for(j=0;j<3;j++)
//{
// delay10ms(100);
//}
}
void write7279(unsigned char cmd, unsigned char dat)
{
send_byte (cmd);
send_byte (dat);
cs=1;
}
unsigned char read7279(unsigned char command)
{
send_byte(command);
//cs=1;
return(receive_byte());
}
void send_byte( unsigned char out_byte)
{
unsigned char i;
cs=0;
clk=0;
long_delay();
for (i=0;i<8;i++)
{
if (out_byte&0x80)
{
dat=1;
}
else
{
dat=0;
}
clk=1;
short_delay();
clk=0;
short_delay();
out_byte=out_byte*2;
}
dat=1;
}
unsigned char receive_byte(void)
{
unsigned char i, in_byte;
dat=1;
long_delay();
for (i=0;i<8;i++)
{
clk=1;
short_delay();
in_byte=in_byte*2;
if (dat)
{
in_byte=in_byte|0x01;
}
clk=0;
short_delay();
}
dat=0;
cs=1
return (in_byte);
}
void long_delay(void)
{
unsigned int i;
//unsigned char ii;
for (i=0;i<0x30;i++);
}
void short_delay(void)
{
unsigned char i;
for (i=0;i<8;i++);
}
// ********************* .1 n*10ms **********************
void delay10ms(unsigned char time)
{
unsigned char i;
unsigned int j;
for (i=0;i<time;i++)
{
for(j=0;j<0x390;j++) ;
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -