⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ex4-10.c

📁 嵌入式C语言程序设计教材的程序例子代码
💻 C
字号:
/*
标题:范例 4-10
版本:1.0
Target:89S51
程序描述:这个范例说明如何使用8051,以及汇编语言的程序连结,
当我们按下向上数的按钮之后,程序就会把0到9的共
阳7段显示器字型码存入AT93C46;如果我们按下向下
数的按钮之后,程序就会把9到0的共阳7段显示器字
型码存入AT93C46。
             程序每一次重新开始执行时(Power on 或是Reset),8051
会先从AT93C46当中读出最前面的10个位组,然后
就反复地将这10个位组的数据经由PORT 1送到1个
共阳七段显示器。*/
/* ***************************************************** */
#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++);
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -