找回密码
 立即注册

QQ登录

只需一步,快速开始

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

为什么数码管没反应

[复制链接]
ID:272089 发表于 2018-4-12 08:47 | 显示全部楼层 |阅读模式
30黑币
#include<regx52.h>
#include<intrins.h>
#include<rtx51tny.h>
#include "string.h"
#define uchar unsigned char
#define uint unsigned int
uchar gs=0,n,houdu=0;
bit flag=0;
uchar keynum;
void delay(uint i){while(i--);}
sbit in0=P1^0;sbit in1=P1^1;sbit in2=P1^2;sbit in3=P1^3;
sbit in4=P1^4;sbit in5=P1^5;sbit in6=P1^6;sbit in7=P1^7;
sbit k1=P2^0; sbit k2=P2^1; sbit k3=P2^2; sbit k4=P2^3;sbit k5=P2^4;
sbit col0=P3^0;sbit col1=P3^1;sbit col2=P3^2;
sbit row0=P3^4;sbit row1=P3^5;sbit col3=P3^3;
#define zuo        k1=0;k2=1
#define        you        k1=1;k2=0
#define stop       k2=k2=1
#define shang      k5=1
#define xia        k5=0
#define jia        k3=0;k4=1
#define song       k3=1;k4=0
extern uchar display(uchar *buf);
uchar key_get()
{
     uchar k=' ';
         col0=col1=col2=col3=1;
         row0=0;k=col0==0?'+':col1==0?'-':col2==0?'h':col3==0?'m':k;row0=1;
         row1=0;k=col0==0?'r':k;row1=1;
         return k;
}          
void wuliao_task() _task_ 2                 //物料搬运部分
{
           uchar n=0,i,houdu;
         while(1)
         {
         switch(n)
            {
              case 0:
                       if(in2){zuo;}
                           else stop;
                           n++;
                           break;
                  case 1:
                       if(in5==0)song;
                           n++;
                  case 2:
                       if(in7==0)
                           {
                              while(in0==1)you;
                                  break;
                           }
                           n++;
                  case 3:
                       if(in4)xia;
                           break;
                           n++;
                  case 4:
                       if(in5)jia;
                           break;
                           n++;
                  case 5:
                       if(in3)shang;
                           break;
                           n++;
                  case 6:
                       for(i=0;i<houdu;i++)
                           {
                               if(in2)zuo;
                                   if(in0)you;
                           }
             }
                   os_switch_task();
         }
}

void main1_task() _task_ 0
{
    os_create_task(1);
        os_create_task(2);
    while(1)
        {
                 keynum=key_get();
                 if(' '!=key_get()&flag==0)
                 {
                      delay(150);
                          if(' '!=key_get())
                          {
                               flag=1;
                                   keynum=key_get();
                                   if(keynum=='+'&&gs==1)houdu++;
                                   if(keynum=='-'&&gs==1)houdu--;
                                   if(keynum=='s')
                                   {
                                        if(gs==0)gs=1;
                                   }
                                   if(keynum=='m')
                                   {
                                        if(gs==0||gs==1)gs=2;
                                   }
                                   if(keynum=='r')
                                   {
                                        if(gs==1||gs==2)
                                                {
                                                    gs=3;
                                                    n=0;
                                                }
                                   }
                          }
                 }

        }
}  







显示部分
#include<regx52.h>
#include<intrins.h>
#include<rtx51tny.h>
#include<string.h>
#define uchar unsigned char
#define uint unsigned int
#define LED P0
sbit cs1=P2^5;sbit cs2=P2^6;sbit wr=P2^7;
extern delay(uint i);
uchar code tab_index[]="AB0123456789DLE ";

uchar code table[]={0x88,0x83,0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xa1,0xc7,0x86,0xff};

extern  uchar gs,n,houdu;

extern  bit flag;

uchar  buf[8];
void str(uchar c,uchar *s)
{
    uchar i;
        for(i=0;s[i]!=0&&(c+i)<8;i++)
        buf[c+i]=strpos(tab_index,s[i]);
}

void display()                                  //显示函数
{
    uchar i,j=0x7f;
        for(i=0;i<8;i++)
        {
            cs1=0;cs2=1;
                LED=table[buf[i]];wr=1;wr=0;
                cs1=1;cs2=0;
                LED=j;wr=1;wr=0;
                j=_cror_(j,1);
                delay(100);
                cs1=cs2=0;
                LED=0xff;wr=1;wr=0;
        }
}

void dis_task() _task_ 1
{
     while(1)
         {
            switch(gs)
                {
                    case 0:
                     str(0,"    1DLE");
                                 break;
                        case 1:
                             str(0,"       ");
                                 buf[6]=houdu;
                                 break;
                        case 2:
                             str(0,"       ");
                                 buf[6]=flag;
                                 break;
                        case 3:
                             str(0,"rUn   ");
                             buf[6]=houdu;
                                 buf[7]=flag;
                                 break;
                }
                    display();
                        os_switch_task();
         }
}

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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