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

📄 新建 文本文档.txt

📁 从虚拟终端输入8个任意数据
💻 TXT
字号:
/* 一、排序实验
    从虚拟终端输入8个任意数据,通过串口传送给单片机的led_buf缓冲区,并在8个led上显示;
按回车键对led_buf缓冲区中的数据进行由小到大排序,排序结果在led上显示。
(按退格键,去除前一个输入数据)

传送速率为1200波特,设fosc=12MHz,SMOD=0。
    解:T1的计数初值x=230=0E6H      */
//中断接收程序(8_1_R.C)

#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
uchar led_code[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,       //定义"0~7"段码
                    0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; //定义"8~f,空格"段码
uchar led_buf[8]={16,16,16,16,16,16,16,16};  //定义led缓冲区,显示空格。

char *p;

void display(void)
{   uchar i,SELE_B; uint j;
    SELE_B=0x01;                  //设置位选码(选中最左边位)
    for(i=0;i<8;i++)
    {   P2=0x00;                  //关闭所有LED
        P1=led_code[led_buf[i]];  //输出字形码
        P2=SELE_B;                //输出位选码
        for(j=0;j<=25;j++);       //延时211us
        SELE_B<<=1;               //产生下一位的位选码
    }
}

void sort(uchar *p,uchar Size)	//排序程序(入口参数:p指向数组的指针;Size元素个数)
{
	bit Change;uchar i,j,Temp;	//Change、i、Temp分别表示交换标志、循环控制、暂存变量
	//Size--;						//Size减1为比较次数

    for(i=0;i<8;i++)
    //*p=led_buf[i];
    do
   {
    Change=0;
    for(j=0;j<(Size-1);j++)
    {if(led_buf[j]>led_buf[j+1])
     {Change=1;
       Temp=led_buf[j];
       led_buf[j]=led_buf[j+1];
      led_buf[j+1]=Temp;
      }}}while(Change);

}

Trs() interrupt 4       //串口接收中断程序
{   uchar i;
    RI=0;               //接受中断标志清0
	if(SBUF == 8 ) {for(i=7;i>0;i--) led_buf[i]=led_buf[i-1];led_buf[0]=16;}//是8时,退格调
	else if(SBUF == 13) sort(led_buf , 8);				//是13时,调用排序程序
    else{	for(i=0;i<7;i++) led_buf[i]=led_buf[i+1];	//LED_BUF内容左移
    		*p=SBUF & 0x0F;								//接受下一个数据
		}
}

main()
{   TMOD=0x20;          //T1方式2
    TH1=0xe6;           //波特率1200
    TL1=0xe6;           //波特率1200
    TR1=1;              //启动T1计数
    SCON=0x50;          //设置串口方式1(允许接受)
    EA=1;ES=1;          //开中断
    while(1)            //进入发送循环
    {   p=led_buf+7;    //指向显示缓冲区
        display();      //显示接收数据
    }
}






⌨️ 快捷键说明

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