求一个51单片机C语言程序编程

要求
串行通信
1、编写点对点的串行通信
2、利用KEIL C进行仿真和调试
明天就要了,求各位大神。
单片机是89c51

第1个回答  2013-04-12

实验内容:单片机甲、乙进行双机串行通信,甲机通过串口控制乙机LED闪烁(如下图所示,要求利用芯片MAX232),双方的晶振频率均为11.0592MHz(波特率为9600kb/s)要求:甲机按开关K1一次,发送字符“A”给乙机,点亮灯D1与D2;按开关K1两次,发送字符“B”给乙机,点亮灯D3与D4;按开关K1三次,发送字符“C”给乙机,全部点亮;按下第四次K1,灯全灭


#include<reg51.h>           /*甲机*/

sbit  k=P1^0;

sbit  P00=P0^0;

sbit  P03=P0^3;

unsigned chari,NO;   

 void main(void)             /* 主函数*/

{

SCON=0x40;  /*方式1只发送,不接收*/ TMOD=0x20; 

TH1=0xfd;   /*给定时器T1赋初值,波特率为9600*/

TL1=0xfd;

TR1=1;

k=1;

NO=0;

  while(1)

  { 

        if(k==0)

        {while(k==0);

        NO=(NO+1)%4;

        }

        switch (NO)

        {case 0 :P0=0xff; 

                 

                 break;

       

        case 1 :P00=0;P03=1; 

                SBUF='A';   

                while(TI==0);   

              TI=0;   

                break;

 

        case 2 : P00=1;

                 P03=0; 

                SBUF='B';   

                while(TI==0);   

              TI=0;   

                break;

 

        case 3 : P00=0; 

                 P03=0;

                SBUF='C';   

                while(TI==0);   

              TI=0;   

                break; 

        }

             

   }

   for(i=250;i>0;i--){;}   //延时

}

 

 

#include<reg51.h>      /*乙机*/

sbit  k=P1^0;

sbit  P00=P0^0;

sbit  P03=P0^3;

unsigned char NO;

 

void main()         /*主函数*/

 {

       SCON=0x50;      /*设置串口为方式3,允许接收REN=1*/

       TMOD=0x20;   

       TH1=0xfd;   /*给定时器T1赋初值,波特率为9600*/

       TL1=0xfd;

       TR1=1;

       P0=0xff;

while(RI==0); /*检测接收中断标志RI,RI=0,未接收完,则循环等待*/

       {RI=0;                     

        switch (SBUF)

         { case 'A': P00=0;P03=1;

                 break;

       

         case 'B':P00=1;P03=0;     

                   break;

 

         case 'C': P00=P03=0;               

                    break;

 

     

         }

        }

 }           




符合不???


本回答被网友采纳
第2个回答  2013-04-12
89c51吗?追问

是的

追答

书上应该有吧

追问

哪本书,我们没有教材,书是图书馆借的

追答

应该是讲串行并行那节吧

怎么用c语言编程51单片机读写程序?
编程代码如下:ORG 0000H MOV DPTR,#1000H ;给源数据块地址指针DPTR赋初值 MOV P2, #20H ;给目的数据块地址指针P2和R0赋初值 MOV RO,#00H LOOP: MOVX A, @DPTR .MOVX @RO, A .INC DPTR INC RO CJNE RO,#64H, LOOP SJMP

求一个51单片机C语言程序编程
unsigned chari,NO;void main(void) \/* 主函数*\/ { SCON=0x40; \/*方式1只发送,不接收*\/ TMOD=0x20;TH1=0xfd; \/*给定时器T1赋初值,波特率为9600*\/ TL1=0xfd;TR1=1;k=1;NO=0;while(1){ if(k==0){while(k==0);NO=(NO+1)%4;} switch (NO){case 0 :P0=0xff;b...

用五一单片机c语言编程,p1口控制八个发光二极管,实现每隔一秒,两两点亮...
P0 = 0x00; \/\/P0.0~P0.7分别接八个发光二极管,刚开始全灭 while(1){ delay(1000);P0 = 0xc0;\/\/点亮前两个发光二极管P0.0和P0.1;delay(1000);\/\/延时1秒 P0 = 0x30;\/\/点亮第三个和第四个LED delay(1000);P0 = 0x0c;delay(1000);P0 = 0x03;} } 二、include <reg52.h>...

求大神在keil上帮写51单片机C语言程序
\/\/第一个实验:\/\/假设8个LED阴极指向单片机,D11连接P0.1,D12连接P0.2 ... D18连接P0.7\/\/假设K1按键在P2.3引脚#include<reg51.h>#include<intrins.h>sbit k1=P2^3;\/\/假设K1按键在P2.3引脚void main(){P0=0xfe;while(1){if(k1==0){while(k1==0);P0=_crol_(P0,1);}}}...

用C语言如何开51单片机的计数器,最好编个实例程序
include <reg51.h> define uchar unsigend uchar define uint unsigned int unsigned char code LED7Code[] = {~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5E,~0x79,~0x71};\/\/数码管段码 void main(){ uint k;TMOD=0X50;\/\/...

求一个用C语言编写的51单片机音乐程序代码。
include <reg52.h> sbit speaker=P2^2;unsigned char timer0h,timer0l,time;\/\/生日歌 code unsigned char sszymmh[]={5,1,1, 5,1,1, 6,1,2, 5,1,2, 1,2,2, 7,1,4,5,1,1, 5,1,1, 6,1,2, 5,1,2, 2,2,2, 1,2,4,5,1,1, 5,1,1, 5,2,2, 3,2,2,...

大家帮忙找一些51单片机的基本C语言程序例子,最好带说明,谢啦_百度知 ...
EA=1; \/\/开系统中断 while(1); \/\/等待中断处理 } \/\/INT0中断处理函数 void int0_interrupt() interrupt 0 \/\/INT0中断号0 { count++;port_count=~count; \/\/当达到255时,溢出,又从0开始 } I\/O控制程序:include <AT89X52.H> include <intrins.h> define uchar unsigned char d...

大神,求51单片机做简易计算器的那个c语言程序
uchar d1=16,d2=16,d3=16,d4=16,d5=16;uchar f1=16,f2=16,f3=16,f4=16,f5=16,f6=16,f7=16,f8=16,f9=16,f10=16;uchar key,keyval,c,temp;void Delay1ms(uint i) \/\/1ms延时程序 { uint j;for(;i>0;i--){ for(j=0;j<125;j++){;} } } void write_com(uchar com...

求一个51单片机用T0做计数器的C语言代码。
\/\/timer0设定为计数器模式1 TMOD &= 0xf0; \/\/清除原来的设定 TMOD |= 0x05; \/\/T0为计数器模式1 TH0 = 0;TL0 = 0; \/\/从0开始计数 TR0 = 1; \/\/使能T\/C0 \/\/ IE |= 0x82; \/\/Timer0中断使能,不需要就注释掉该行 另外执行不了有可能是你的实验板没有连接T0引...

跪求一个51单片机控制ws2812灯带的程序,
以下是一个示例程序:```c include <reg51.h> define F_CPU 11059200UL \/\/ 11.0592 MHz define DELAY_COEFFICIENT 12 \/\/ 延迟系数 \/\/ 定义端口 sbit LED = P1^0;\/\/ 延迟函数 void delay(unsigned int us){ while (us--);} \/\/ 发送一个比特 void send_bit(unsigned char bit_val...

相似回答