微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 有没有谁看出这个c程序的问题?用串口调试助手测试有问题

有没有谁看出这个c程序的问题?用串口调试助手测试有问题

时间:10-02 整理:3721RD 点击:

测试时的异常现象:用串口调试助手发1、2、3等数,但始终是打印出"error!“
#include<reg52.h>
#include<intrins.h>
#include<stdio.h>
#include <string.h>

#define uint unsigned int
#define uchar unsigned char
void delay(uint);
void inital();
sbit led1=P1^0;

uchar ch,temp;
unsigned char flag,flag_on;
//uint flag,flag_on;

void main()
{
//        uchar temp;
        inital();
        while(1)
        {
                if(flag)
                {
                        flag=0;
                        ES=0;
                        TI=1;                       
                        switch(flag_on)
                        {
                                case 1:printf("turn on ad!\n");
                                           break;
                                case 2:printf("turn off ad!\n");                                               
                                   break;
                                case 3:puts("error!\n");       
                                       break;
                        }
                        while(!TI);
                        TI=0;
                        flag_on=0;
                        ES=1;
                }
        }
       
}
void delay(uint xms)
{
        uchar i;
        while(xms--)
        for(i=110;i>0;i--);
}
void inital()
{
        TMOD=0x21;//T1工作于8位自动重装模式,T0工作于16位定时计数模式
        TH1=0xfd;//设定9600bps
        TL1=0xfd;
        TH0=(65536-50000)/256;//T0装初值,每隔50ms溢出一次、
        TL0=(65536-50000)%256;
        TR1=1;
        ET0=1;
    SCON=0x50;//设定串口工作于模式1?10位
        PCON=0x00;
        EA=1;
        ES=1;
}
void ser()interrupt 4
{
        RI=0;
        ch=SBUF;
        flag=1;
        if(ch==1)
                flag_on=1;
           else if(ch==2)
                 flag_on=2;
         else
                  flag_on=3;
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top