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

📄 ch14-1r.c

📁 单片机接口技术(C51版)例程源代码
💻 C
字号:
//接收机程序
#include <reg51.h>
#define XBYTE ((char *)0x20000L)

bit ask_flag=1,OK_flag=1;   /* OK 指示灯状态标志;等待连机成功时间标志;*/
sbit M7512_MOD2=0xb2;
sbit M7512_MOD1=0xb3;
sbit M7512_RS=0xb4;
sbit M7512_CD=0xb5;
sbit BELL=0x97;
sbit P_D=0xb7;
data unsigned char d_data,times,f_t;
code unsigned char disp_list[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc0};

void delay(void);
void delay_t(int j);
void f_test(void);

main()
{
P1=0xff;
P3=0x7f;
P_D=1;
TMOD=0x21;		/* T0 为16位定时器,T1 波特率1200 */
TL0=0x01;TH0=0x00;
TL1=0xe8;TH1=0xe8;
SCON=0xd8;PCON=0x00;
ET0=1;
TR0=1;			/* 启动T0 */
TR1=1;			/* 启动T1 */
d_data=1;
P1=0xfe;        /* disp_list[d_data];   */
BELL=1;
ES=1;
EA=1;
M7512_MOD1=0;	
M7512_MOD2=0;		/* M7512 为发送方式 */
while(1)		/* 键盘扫描 */
    {
    if((BELL==0)&&(ask_flag==1))
        {
        delay_t(80);
        while(BELL==1);
        delay_t(10);
        ask_flag=0;
        P_D=0;
	delay_t(10);
        P1=0xf7;
        times=0x90;
        }
    }
}

void f_test(void)
{
EA=0;
M7512_RS=0;
while(1)
    {
    SBUF=0x0f; 
    while(TI==0);
    TI=0;
    }
}

void series_int(void) interrupt 4 using 2 
{
unsigned char data_temp;
if(TI==1)
    {
    TI=0;
    M7512_RS=1;
	M7512_MOD1=1;
    M7512_MOD2=0;
    P1=0xfd;
    }
if (RI==1)
    {
    data_temp=SBUF;
    RI=0;
    switch(data_temp)
        {
        case 0x01:
        case 0x02:
        case 0x03:
        case 0x04:
        case 0x05:
        case 0x06:
        case 0x07:
        case 0x08:
        case 0x09:
        case 0x0a:
            P1=disp_list[data_temp];
            times=0xff;
            break;
        case 0xa5:
            P_D=1;
            M7512_MOD1=0;
            M7512_MOD2=0;
            ask_flag=1;
            OK_flag=1;
            P1=0xfe;
            break;
        }
    }
}

void time_int(void) interrupt 1 using 3
{
TH0=0x00;
TL0=0x01;
TR0=1;
times--;
if((times==0x00)&&(ask_flag==0))
    {
	if(OK_flag==1)
	{
    M7512_MOD1=0;
    M7512_MOD2=0;
    M7512_RS=0;
    delay();
    delay_t(100);
    SBUF=0xa5;
    OK_flag=0;
	}
	else
	{
	P_D=1;
	M7512_MOD1=0;
	M7512_MOD2=0;
	ask_flag=1;
	OK_flag=1;
    P1=0xfe;
    }
    }
}

void delay(void)
{
idata int i;
for(i=0;i<1000;i++)
    {}
}

void delay_t(int j)
{
idata int i;
while(j>0)
{
for(i=0;i<1000;i++)
    {}
j--;
}
}

⌨️ 快捷键说明

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