找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2440|回复: 0
收起左侧

芯片PL3201核心通道板驱动程序调试

[复制链接]
ID:82781 发表于 2015-6-13 15:55 | 显示全部楼层 |阅读模式
前几天为串口2的接收发愁,总是以为是软件问题,后来和建华,一顿示波器,一顿万用表,捉住几个波形,测量电压,最后才说是电平被USB供电的串口芯片拉低,只有3,5V的高电平,PL3201这块货识别不出来,所以唯一的办法就是抬升加中间转换芯片,,再次声明PL3201是他妈的大垃圾!大家千万不要用了,垃圾的要死!麻痹的下载个程序卡的要死,10次能同步一次,还有啊,不能JTAG,想看个变量都要打印出来,调试程序要了命了,麻烦啊!全是眼泪啊!呜呜!
// 控制看门狗喂狗时间长度                          
  CKCON=0xfF;
  // 8位/16位运算模式选择位设置
  ALU_MOD=0;      // 设置成8位运算模式
  //载波通讯配置
        //************   3201的载波寄存器设置  **********//
  set_PLC_3105 ( );                        //上电为3105模式
  
  SSC_ADR=0xFF;
  SSC_DAT=0xFF;
  SSC_ADR=0x02;
  SSC_DAT=0x1F;
  SSC_ADR=0xFF;
  SSC_DAT=0x00;
         
//************   3201的载波寄存器设置  **********//
                                                                                           //  ( C8H ) 为边沿触发方式(IT2=1)
  
//串口通讯配置
  //TMOD1 = 0x10 ;                              // 设 T/C1 为1分频模式,ZZZ
  TMOD = 0x21 ;                              // 设 T/C1 为定时方式2 设置为8位自装载计数器  T/C0 为定时方式 1
  SCON=0x50;                           // 工作方式1
  
  PCON=0x80;                           // 波特率加倍
  TH1=BPS2400;
  TL1=BPS2400;                        // 加倍设定波特率 9.6MHz ( 按1分频2400计算)
  TR1=1;
  
  IE=0x82;                              // 启动定时器1
  TH0=0x63;
  TL0=0xcc;                                                                                                    // 定时 50 ms 一个定时中断
  TR0 = 1;           
         
        
  TMOD1=0x12; //time2方式2
  SCON1=0x50; //
  TH2=0xfb;
  TL2=TH2;
  TR2 =1;

   ES=1;
   ES1=1;
   EA=1;

sbit  USART0_RX_A=P1^2;
sbit  USART1_TX_A=P0^3;
static   uint8_t write=0;
static   uint8_t read=0;
uint8_t xdata  USART_BUF[50];//usart缓存


static   uint8_t write1=0;
static   uint8_t read1=0;
uint8_t xdata  USART_BUF1[50];//usart缓存




void check_usart()
{


if(write!=read)
{
        USART1_TX_A=~USART1_TX_A;//发送指示
   SendOneByte1(USART_BUF[read]);
   read++;
   if(read==49)read=0;


  }


}
void check_usart1()
{
if(write1!=read1)
{
        USART1_TX_A=~USART1_TX_A;//发送指示
   SendOneByte1(USART_BUF1[read1]);
   read1++;
   if(read1==49)read1=0;


  }        


}
void Show_version(void)
{
        
  printf_usart(" Version:0.0.0 \n");
  printf_usart("  小ARM菜菜 \n");
  printf_usart("QQ:925295580 \n");
  printf_usart("王建华的路灯终端板 \n");
  printf_usart("Over! \n");




}




    void SendOneByte1(unsigned char c)
{
   USART1_TX_A=~USART1_TX_A;
    SBUF1 = c;
    while(!ETI);
    ETI=0;
}




  void printf_usart(char  *ptr)
{
                        char a;
        while (*ptr) {
                        
                a=(char)*ptr;
                SendOneByte1(a);
                ptr++;        
        }                                                               
}


  void send_usart1_data(char  *ptr,unsigned char len)
{
                        char a,i;
        for(i=0;i<len;i++)
         {
                        
                a=(char)*ptr;
                SendOneByte1(a);
                ptr++;        
        }                                                               
}


void UARTInterrupt(void) interrupt 4
{
           char a;


    if(RI)
    {
        RI = 0;
        USART0_RX_A=~USART0_RX_A; //串口1接收
        /*USART_BUF[write]=SBUF;
                write++;
                if(write==49)write=0;  */
                a=SBUF;
           SendOneByte1(a);
    }
    else
        TI = 0;
}


void UARTI1nterrupt(void) interrupt 6
{

                char b;


         

           if(ERI)
    {
                ERI=0;
                USART0_RX_A=~USART0_RX_A; //串口1接收
                 /*USART_BUF1[write1]=SBUF1;
                write1++;
                if(write1==49)write1=0;
                   */
           b= SBUF1;
          SendOneByte1(b);
         }
         else
         {
         
           ETI=0 ;
          //send_usart1_data("456",3);
         }





}


void SendOneByte(unsigned char c)
{
    SBUF = c;
    while(!TI);
    TI = 0;
}



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表