?? ex4-10.c
字號(hào):
/*
標(biāo)題:范例 4-10
版本:1.0
Target:89S51
程序描述:這個(gè)范例說(shuō)明如何使用8051,以及匯編語(yǔ)言的程序連結(jié),
當(dāng)我們按下向上數(shù)的按鈕之后,程序就會(huì)把0到9的共
陽(yáng)7段顯示器字型碼存入AT93C46;如果我們按下向下
數(shù)的按鈕之后,程序就會(huì)把9到0的共陽(yáng)7段顯示器字
型碼存入AT93C46。
程序每一次重新開(kāi)始執(zhí)行時(shí)(Power on 或是Reset),8051
會(huì)先從AT93C46當(dāng)中讀出最前面的10個(gè)位組,然后
就反復(fù)地將這10個(gè)位組的數(shù)據(jù)經(jīng)由PORT 1送到1個(gè)
共陽(yáng)七段顯示器。*/
/* ***************************************************** */
#include <REGX51.H>
#define down_button P2_0
#define up_button P2_1
#define TRUE 1
#define FALSE 0
unsigned char msg[10];
unsigned char code
msg1[10]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};
unsigned char code
msg2[10]={0X90,0X80,0XF8,0X82,0X92,0X99,0XB0,0XA4,0XF9,0XC0};
unsigned char idata i _at_ 0X20;
volatile unsigned char idata lb _at_ 0X15;
volatile unsigned char idata hb _at_ 0X16;
unsigned char idata source _at_ 0X11;
unsigned char idata dest _at_ 0X12;
extern void write_enable();
extern void write_disable();
extern void write_data();
extern void read_data();
void delay();
void main (void) {
static unsigned char i,j;
do {
for(i=0;i<5;i++) {
source=i;
dest=0x15;
read_data();
msg[2*i]=lb;
msg[2*i+1]=hb;
}
do {
for(i=0;i<10;i++) {
P1=msg[i];
delay();
if ( down_button==0) {
do { }while( down_button==0 );
goto down;
}
if ( up_button==0) {
do { }while( up_button==0 );
goto up;
}
}
} while (1);
down:
write_enable();
for(j=0;j<5;j++) {
source=j;
dest=0x15;
lb=msg2[2*j];
hb=msg2[2*j+1];
write_data();
}
write_disable();
continue;
up:
write_enable();
for(j=0;j<5;j++) {
source=j;
dest=0x15;
lb=msg1[2*j];
hb=msg1[2*j+1];
write_data();
}
write_disable();
} while (1);
}
void delay() {
unsigned int j;
for (j=0;j<33767;j++);
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -