双机串行口通信实验仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- #include <reg51.h>
- #define DISPLAY P1
- #define KEY P2
- sbit key=P2^0;
- bit ACK_flag;
- unsigned char code display_code[10] = {0XC0 , 0XF9 , 0XA4 , 0XB0 , 0X99 , 0X92 , 0X82 , 0XF8 , 0X80 , 0X90 };
- unsigned char counter=0;
- unsigned char A=0;
- unsigned char key_date=1;
- void init( );
- void LED_display( );
- void delay5ms( );
- void delay5ms(void)
- {
- unsigned char i,j;
- for(i = 10; i > 0; i--)
- for(j = 248; j > 0; j--);
- }
- void LED_display()
- {
- DISPLAY = display_code[A];
- }
- void init()
- {
- SCON = 0x50;
- PCON = PCON & 0x7F;
- TMOD = 0x20;
- TH1 = 0xF3;
- TL1 = 0xF3;
- TR1 = 1;
- IE = 0x90;
- }
- void main()
- {
- init( );
- while(1)
- {
- LED_display( );
- delay5ms( );
- ACK_flag = 0;
- if( key_date!=key)
- {
- while(!key);
- {
- if(counter==9)
- counter=0;
- else
- counter++;
- SBUF = counter;
- while(!ACK_flag);
- }
- }
- }
- }
- diaoyong( ) interrupt 4 using 1
- {
- if( RI )
- {
- RI=0;
- A=SBUF;
- LED_display( );
- delay5ms( );
- key=1;
- }
- if(TI)
- {
- TI = 0;
- ACK_flag=1;
- }
- }
复制代码
所有资料51hei提供下载:
单片机第三次实验.zip
(59.07 KB, 下载次数: 71)
|