找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4231|回复: 0
打印 上一主题 下一主题
收起左侧

求助ID 门禁 读卡 解码问题125K 的 我的程序哪里错了,

[复制链接]
跳转到指定楼层
楼主
50黑币
本帖最后由 rester 于 2017-12-1 18:48 编辑

本人也是业余爱好, 得一门禁成品机  里面芯片用的是STC的,读卡是358放大  直接进 芯片解码  没有读卡芯片  硬件一切正常   芯片是STC 10F12XE的

各个IO功能都有定义, 程序的 125K方波输出 是完全正常的,示波器观察的,我的思路是通过 定时器1延时 256微秒 来读卡  。曼彻斯特码分解后的128 数据 分16组8位 通过串口发送到电脑,串口通讯 设置也正常,可正常接收数据 ,问题是  为啥我接收的数据是乱码 没有规律呢, 按道理讲 接收到的应该是16组 一样的数据,        晶振是24M的。附送 图纸一张  图纸是工厂内部批量生产的 很成熟的方案




#include<stc10f.h>        
                                                         #include<intrins.h>
#define fm P0  
                 
                           
sbit btn=P1^6;        //出门按钮
sbit gled=P1^5;  //绿灯                              
sbit rled=P1^4;   //红灯
sbit jdq=P1^3;                // 继电器 输出
sbit jiance=P4^1; //按键检测
sbit ky0=P0^4;          //按键
sbit ky1=P0^5;          //按键
sbit ky2=P0^6;          //按键
sbit ky3=P0^7;         //按键
sbit out=P3^4;        // 125k 方波输出
sbit js=P3^5;        //读卡入口                 
   unsigned char a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,cc;        
  bit k;                                                        
unsigned char a,b,jss;
unsigned char sju[35];
                  void ys1()        ;
                  void ys(unsigned int z);
void main()
{                            a1=a2=a3=a4=a5=a6=a7=a8=a9=a10=a11=a12=a13=a14=a15=a16=a17=0;          k=0;
           jiance=1;  fm=0xff; rled=1;gled=1;        jdq=0;          jss=0;        a=0; b=0;
                    P1M1=0X00;P1M0=0X08;        //P1.3设置强推大电流模式
                    P3M1=0X00; P3M0=0X10; //P3.4
                        
                EA=1;  REN=1; ES=1; SCON=0X50;             PCON = 0x00;

                BRT=0XB2;//独立波特率9600初值
                                                                                                             // PT1=1;//串口中断 最优先
           AUXR =0x95;//1T 0x80   独立波特率  1T模式

               WAKE_CLKO=0x01;//t0 输出允许位          //T0CLKO=1;
               TMOD=0x12;
               TR0=1;  TH0=TL0=0XA0;        //输出频率设定
                                                                                                                  // sju[33]=0x16; sju[34]=0x17;sju[35]=0x18;
                                        TH1=(65536-512)/256;  
                            TL1=(65536-512)%256;                                                                          // sju[1]=0x00; sju[2]=0x11;sju[3]=0x22;
                                                                                                                  // sju[4]=0x33; sju[5]=0x44;sju[6]=0x55;
                                                                                                                  //sju[7]=0x66; sju[8]=0x77;sju[9]=0x88;


                           ET1=1;               
                                                                                          


          while(1)
         {        
                            if(js==1){ys1();         
                                          if(js==1&&a1==0){TR1=1;sju[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]=0;         
                              }
                                                         }
                 
                              if(a1==16){TR1=0;jss=0;a=0;}                        
                                                               
                                                   if(a1==16&&TR1==0)

                 {
                        for(a3=0;a3<16;a3++){SBUF=sju[a3];while (TI==0);TI=0;}a1=0;a=0;TR1=0;        }                                                                                                           
                                                     
                  
                        
         
         }                                                                                                                                 


}
          void ys(unsigned int z)
{          unsigned int e ,f;
          for(e=z;e>0;e--)
          for(f=1000;f>0;f--);

}

void ys1()                //@24.000MHz
{
        unsigned char i, j;
         
        _nop_();
        _nop_();
        i = 5;
        j = 160;
        do
        {
                while (--j);
        } while (--i);
           
}


void zd() interrupt 3
{               
                        
                TH1=(65536-512)/256;  
                    TL1=(65536-512)%256;                    
                        
                                 
                                                ys1();                 
                                                
                                                if(js==1){jss<<=1;jss++;a++;} else {jss<<=1;a++;}
                                                                                                                              
                                                if (a==8){sju[a1]=jss;a1++;a=0;jss=0;}
                                                                 
                                                               
                                                                                 
                                                if(a1==16){TR1=0;jss=0;a=0;}                        
                                                                          
                                                
                                                
                                                
                                                  
                        
                        
               
}
void chuangkou()interrupt 4
{                        
         // RI=0;         // while (TI==0);TI=0;
//if(RI==1){RI=0;}
     //        if(TI==1)        {TI=0;}                        


}

YL(LQ7BI18(GEXDF1X[17)3.png (65.4 KB, 下载次数: 55)

YL(LQ7BI18(GEXDF1X[17)3.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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