找回密码
 立即注册

QQ登录

只需一步,快速开始

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

跪求大神帮忙

[复制链接]
跳转到指定楼层
楼主
ID:158460 发表于 2016-12-28 20:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基于51单片机的八路抢答器程序,求大神帮忙把c语言转换为汇编语言,感激不尽啊。
#include<reg51.h>
#include<intrins.h>
sbit smg1=P2^0;                //定义数码管第一位
sbit smg2=P2^1;                //定义数码管第二位
sbit smg3=P2^2;                //定义数码管第三位
sbit keyks=P3^0;        //定义开始按键
sbit keytz=P3^1;        //定义停止按键
sbit keyqc=P3^2;        //定义清除按键
sbit key1=P1^0;                //定义1号抢答选手
sbit key2=P1^1;                //定义2号抢答选手
sbit key3=P1^2;                //定义3号抢答选手
sbit key4=P1^3;                //定义4号抢答选手
sbit key5=P1^4;                //定义5号抢答选手
sbit key6=P1^5;                //定义6号抢答选手
sbit key7=P1^6;                //定义7号抢答选手
sbit key8=P1^7;                //定义8号抢答选手
sbit spk=P3^7;                //定义蜂鸣器
int djs=60,js=0;                   //djsbt是初始倒计时时间,可修改
//int table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int table[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x40};
void delayms(int x)           //延时函数
{
        char i;
        while(x--)
        {
                for(i=500;i>0;i--);
        }
}
void Timer0_init()                        //定时器0初始化
{
        js=0;
        TMOD=0x01;                                  //T0为定时器方式1
        TH0=0x3c;
        TL0=0xb0;                       
        //TR0=1;//IT1=1;
        ET0=1;//EX1=1;
        EA=1;       
}
void timer0() interrupt 1 using 1        //定时器0中断服务函数
{
//            TF0=0;
                 TH0=0x3c;
                TL0=0xb0;                                        //赋初值
                js++;
                if(js>=20)
                  { js=0;
                    djs--;                                        //产生1s的倒计时
                        //led1=~led1;
                   }
}
void djsxs()                                   //显示倒计时函数
{        int b1,b2;
        b1=djs/10;
        b2=djs%10;                                  // 将倒计时时间分成高低位
        P0=table[b1];
    smg2=0;
    delayms(3);
    smg2=1;                                         //显示十位数字
        P0=table[b2];
        smg3=0;
        delayms(3);                                 //显示个位数字
        smg3=1;
}
void djsxs22()                                 
{       
        P0=0x40;
    smg1=0;
    delayms(3);
    smg1=1;                                        //第一位数码管显示-
        P0=0x40;
    smg2=0;
    delayms(3);                           //第三位数码管显示-
    smg2=1;
        P0=0x40;
        smg3=0;
        delayms(3);
        smg3=1;                                  //第四位数码管显示-
}
void djsxs1()
{
        P0=table[1];
    smg1=0;
    delayms(3);
    smg1=1;                                   //第一位数码管显示1
}
void djsxs2()
{
        P0=table[2];
    smg1=0;
    delayms(3);
    smg1=1;                                //第一位数码管显示2
}
void djsxs3()
{
        P0=table[3];
    smg1=0;
    delayms(3);
    smg1=1;                          //第一位数码管显示3
}
void djsxs4()
{
        P0=table[4];
    smg1=0;
    delayms(3);
    smg1=1;                         //第一位数码管显示4
}
void djsxs5()
{
        P0=table[5];
    smg1=0;
    delayms(3);
    smg1=1;                   //第一位数码管显示5
}
void djsxs6()
{
        P0=table[6];
    smg1=0;
    delayms(3);
    smg1=1;                        //第一位数码管显示6
}
void djsxs7()
{
        P0=table[7];
    smg1=0;
    delayms(3);
    smg1=1;                  //第一位数码管显示7
}
void djsxs8()
{
        P0=table[8];
    smg1=0;
    delayms(3);
    smg1=1;                 //第一位数码管显示8
}
void main()
{
        int djs1=60;
        Timer0_init();         //初始化定时器中断
        spk=1;                          //蜂鸣器不响
        djs=60;                //倒计时赋值
        while(1)
        {
       
                LOOP1:   djs=djs1;
                djsxs22();        //LOOP1是标号,显示 -  --
               
                if(key1==0)                 //在定时器运行状态下,key1==0 则说明1号选手按下按键
                {
                        delayms(300);
                        if(key1==0)
                        {
                                while(!key1);          //去除按键抖动后,重新在判断,是否确实按下
                                djs=60;
                                while(1)
                                {
                                        TR0=0;                  //定时器停止
                                        djsxs();          
                                        if(key2==0)          
                                        {       
                                                delayms(300);                   //去除抖动
                                                if(key2==0)           //再次判断是否按下
                                                {
                                                        while(!key2); //如果按下
                                                        djs++;
                                                        djs1=djs;
                                                }
                                        }
                                        if(key3==0)         
                                        {       
                                                delayms(300);                   //去除抖动
                                                if(key3==0)           //再次判断是否按下
                                                {
                                                        while(!key3); //如果按下
                                                        djs--;
                                                        djs1=djs;
                                                }
                                        }
                                        if(key1==0)          
                                        {       
                                                delayms(100);                   //去除抖动
                                                if(key1==0)           //再次判断是否按下
                                                {
                                                        while(!key1); //如果按下
                                                        goto LOOP1;                  //goto语句,回到loop1表号处
                                                }
                                        }                                                                                  
                                }
                        }
                }
                if(keyks==0)
                {                  
                        //spk=0;
                        delayms(300);                 //去除按键抖动
                        if(keyks==0)
                        {
                                while(!keyks);          //以上表示按下开始按键
                                //spk=1;                           //蜂鸣器不响
                                TR0=1;                           //启动定时器 开始倒计时
                                while(1)
                                {
                                        djsxs();
                                        if(keytz==0)
                                        {
                                                delayms(300);                         //此处表示出去抖动, 以后不一一标出
                                                if(keytz==0)
                                                {
                                                        while(!keytz);           //以上表示按下停止按键后
                                                        TR0=0;                   //定时器停止
                                                }
                                        }
                                        if(keyks==0)
                                        {
                                                //spk=0;
                                                delayms(300);
                                                if(keyks==0)
                                                {
                                                        while(!keyks);           //以上表示按下清楚按键后
                                                        //spk=1;                           //蜂鸣器不响
                                                        TR0=1;                   //定时器启动
                                                }
                                        }
/***************************以下是八个选手抢答,key1表示1号选手,依次类推,注释只写第一位选手,其他和第一个完全一致,************************************/
                                        if((key1==0)&&(TR0==1))                 //在定时器运行状态下,key1==0 则说明1号选手按下按键
                                        {                 
                                                spk=0;                 //蜂鸣器响
                                                delayms(3);
                                                if(key1==0)
                                                {
                                                        while(!key1);          //去除按键抖动后,重新在判断,是否确实按下
                                                        spk=1;                  //蜂鸣器不响
                                                        while(1)
                                                        {
                                                                TR0=0;                  //定时器停止
                                                                djsxs1();          //显示选手编号
                                                                djsxs();          //显示剩余倒计时时间
                                                                if(keyqc==0)
                                                                {       
                                                                        delayms(3);                   //去除抖动
                                                                        if(keyqc==0)
                                                                        {
                                                                                while(!keyqc); //如果按下清楚键,则回到- --状态
                                                                                goto LOOP1;                  //goto语句,回到loop1表号处
                                                                        }
                                                                }                                                                                  
                                                        }
                                                }
                                        }
                                        if((key2==0)&&(TR0==1))
                                        {
                                                spk=0;
                                                delayms(3);
                                                if(key2==0)
                                                {
                                                        while(!key2);
                                                        spk=1;
                                                        while(1)
                                                        {
                                                                TR0=0;
                                                                djsxs2();
                                                                djsxs();
                                                                if(keyqc==0)
                                                                {       
                                                                        delayms(3);
                                                                        if(keyqc==0)
                                                                        {
                                                                                while(!keyqc);
                                                                                goto LOOP1;       
                                                                        }
                                                                }                                                                                  
                                                        }
                                                }
                                        }
                                        if((key3==0)&&(TR0==1))
                                        {
                                                spk=0;
                                                delayms(3);
                                                if(key3==0)
                                                {
                                                        while(!key3);
                                                        spk=1;
                                                        while(1)
                                                        {
                                                                TR0=0;
                                                                djsxs3();
                                                                djsxs();
                                                                if(keyqc==0)
                                                                {       
                                                                        delayms(3);
                                                                        if(keyqc==0)
                                                                        {
                                                                                while(!keyqc);
                                                                                goto LOOP1;       
                                                                        }
                                                                }                                                                                  
                                                        }
                                                }
                                        }
                                        if((key4==0)&&(TR0==1))
                                        {
                                                spk=0;
                                                delayms(3);
                                                if(key4==0)
                                                {
                                                        while(!key4);
                                                        spk=1;
                                                        while(1)
                                                        {
                                                                TR0=0;
                                                                djsxs4();
                                                                djsxs();
                                                                if(keyqc==0)
                                                                {       
                                                                        delayms(3);
                                                                        if(keyqc==0)
                                                                        {
                                                                                while(!keyqc);
                                                                                goto LOOP1;       
                                                                        }
                                                                }                                                                                  
                                                        }
                                                }
                                        }
                                        if((key5==0)&&(TR0==1))
                                        {
                                                spk=0;
                                                delayms(3);
                                                if(key5==0)
                                                {
                                                        while(!key5);
                                                        spk=1;
                                                        while(1)
                                                        {
                                                                TR0=0;
                                                                djsxs5();
                                                                djsxs();
                                                                if(keyqc==0)
                                                                {       
                                                                        delayms(3);
                                                                        if(keyqc==0)
                                                                        {
                                                                                while(!keyqc);
                                                                                goto LOOP1;       
                                                                        }
                                                                }                                                                                  
                                                        }
                                                }
                                        }
                                        if((key6==0)&&(TR0==1))
                                        {
                                                spk=0;
                                                delayms(3);
                                                if(key6==0)
                                                {
                                                        while(!key6);
                                                        spk=1;
                                                        while(1)
                                                        {
                                                                TR0=0;
                                                                djsxs6();
                                                                djsxs();
                                                                if(keyqc==0)
                                                                {       
                                                                        delayms(3);
                                                                        if(keyqc==0)
                                                                        {
                                                                                while(!keyqc);
                                                                                goto LOOP1;       
                                                                        }
                                                                }                                                                                  
                                                        }
                                                }
                                        }
                                        if((key7==0)&&(TR0==1))
                                        {
                                                spk=0;
                                                delayms(3);
                                                if(key7==0)
                                                {
                                                        while(!key7);
                                                        spk=1;
                                                        while(1)
                                                        {
                                                                TR0=0;
                                                                djsxs7();
                                                                djsxs();
                                                                if(keyqc==0)
                                                                {       
                                                                        delayms(3);
                                                                        if(keyqc==0)
                                                                        {
                                                                                while(!keyqc);
                                                                                goto LOOP1;       
                                                                        }
                                                                }          
                                                        }
                                                }
                                        }
                                        if((key8==0)&&(TR0==1))
                                        {
                                                spk=0;
                                                delayms(3);
                                                if(key8==0)
                                                {
                                                        while(!key8);
                                                       
                                                        while(1)
                                                        {
                                                                TR0=0;
                                                                spk=1;
                                                                djsxs8();
                                                                djsxs();
                                                                if(keyqc==0)
                                                                {       
                                                                        delayms(3);
                                                                        if(keyqc==0)
                                                                        {
                                                                                while(!keyqc);
                                                                                goto LOOP1;       
                                                                        }
                                                                }          
                                                        }
                                                }
                                        }  
                                        if(djs<=5)  spk=0;          //到倒计时小于5是,蜂鸣器响
                                        if(djs==0)                           //当倒计时时间等于0后,需要按清楚键恢复
                                        {
                                                while(1)
                                                {
                                                        if(keyqc==0)
                                                        {       
                                                                delayms(3);
                                                                if(keyqc==0)
                                                                {
                                                                        while(!keyqc);
                                                                        spk=1;                  
                                                                        goto LOOP1;       
                                                                }
                                                        }
                                                }
                                        }
                                }
                        }
                }
        }
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:7485 发表于 2016-12-28 21:23 | 只看该作者
揣摩别人的,不如自己写一个来的省力。
回复

使用道具 举报

板凳
ID:155507 发表于 2016-12-28 23:44 | 只看该作者

  1.                           ;ASSEMBLY LISTING OF GENERATED OBJECT CODE

  2.                   org 00h
  3.              ; FUNCTION main (BEGIN)
  4.   main:
  5.                                            ; SOURCE LINE # 37
  6.                                            ; SOURCE LINE # 38
  7.                                            ; SOURCE LINE # 39
  8.      R     MOV     djs1,#00H
  9.      R     MOV     djs1+01H,#03CH
  10.                                ; SOURCE LINE # 40
  11.      R     LCALL   Timer0_init
  12.                                ; SOURCE LINE # 41
  13.            SETB    spk
  14.                                ; SOURCE LINE # 42
  15.      R     MOV     djs,#00H
  16.      R     MOV     djs+01H,#03CH
  17.                                ; SOURCE LINE # 43
  18.                                ; SOURCE LINE # 44
  19.                                ; SOURCE LINE # 46
  20. LOOP1:
  21.      R     MOV     djs,djs1
  22.      R     MOV     djs+01H,djs1+01H
  23.                                ; SOURCE LINE # 47
  24.      R     LCALL   djsxs22
  25.                                ; SOURCE LINE # 49
  26.            JB      key1,?C0004
  27.                                ; SOURCE LINE # 50
  28.                                ; SOURCE LINE # 51
  29.            MOV     R7,#02CH
  30.            MOV     R6,#01H
  31.      R     LCALL   _delayms
  32.                                ; SOURCE LINE # 52
  33.            JB      key1,?C0004
  34.                                ; SOURCE LINE # 53
  35. ?C0006:
  36.                                ; SOURCE LINE # 54
  37.            JNB     key1,?C0006
  38. ?C0007:
  39.                                ; SOURCE LINE # 55
  40.      R     MOV     djs,#00H
  41.      R     MOV     djs+01H,#03CH
  42. ?C0008:
  43.                                ; SOURCE LINE # 56
  44.                                ; SOURCE LINE # 57
  45.                                ; SOURCE LINE # 58
  46.            CLR     TR0
  47.                                ; SOURCE LINE # 59
  48.      R     LCALL   djsxs
  49.                                ; SOURCE LINE # 60
  50.            JB      key2,?C0010
  51.                                ; SOURCE LINE # 61
  52.                                ; SOURCE LINE # 62
  53.            MOV     R7,#02CH
  54.            MOV     R6,#01H
  55.      R     LCALL   _delayms
  56.                                ; SOURCE LINE # 63
  57.            JB      key2,?C0010
  58.                                ; SOURCE LINE # 64
  59. ?C0012:
  60.                                ; SOURCE LINE # 65
  61.            JNB     key2,?C0012
  62. ?C0013:


  63.                                ; SOURCE LINE # 66
  64.      R     INC     djs+01H
  65.      R     MOV     A,djs+01H
  66.            JNZ     ?C0144
  67.      R     INC     djs
  68. ?C0144:
  69.                                ; SOURCE LINE # 67
  70.      R     MOV     djs1,djs
  71.      R     MOV     djs1+01H,A
  72.                                ; SOURCE LINE # 68
  73.                                ; SOURCE LINE # 69
  74. ?C0010:
  75.                                ; SOURCE LINE # 70
  76.            JB      key3,?C0014
  77.                                ; SOURCE LINE # 71
  78.                                ; SOURCE LINE # 72
  79.            MOV     R7,#02CH
  80.            MOV     R6,#01H
  81.      R     LCALL   _delayms
  82.                                ; SOURCE LINE # 73
  83.            JB      key3,?C0014
  84.                                ; SOURCE LINE # 74
  85. ?C0016:
  86.                                ; SOURCE LINE # 75
  87.            JNB     key3,?C0016
  88. ?C0017:
  89.                                ; SOURCE LINE # 76
  90.      R     MOV     A,djs+01H
  91.      R     DEC     djs+01H
  92.            JNZ     ?C0145
  93.      R     DEC     djs
  94. ?C0145:
  95.                                ; SOURCE LINE # 77
  96.      R     MOV     djs1,djs
  97.      R     MOV     djs1+01H,djs+01H
  98.                                ; SOURCE LINE # 78
  99.                                ; SOURCE LINE # 79
  100. ?C0014:
  101.                                ; SOURCE LINE # 80
  102.            JB      key1,?C0008
  103.                                ; SOURCE LINE # 81
  104.                                ; SOURCE LINE # 82
  105.            MOV     R7,#064H
  106.            MOV     R6,#00H
  107.      R     LCALL   _delayms
  108.                                ; SOURCE LINE # 83
  109.            JB      key1,?C0008
  110.                                ; SOURCE LINE # 84
  111. ?C0020:
  112.                                ; SOURCE LINE # 85
  113.            JB      key1,LOOP1
  114.            SJMP    ?C0020
  115.                                ; SOURCE LINE # 86
  116.                                ; SOURCE LINE # 87
  117.                                ; SOURCE LINE # 88
  118.                                ; SOURCE LINE # 89
  119.                                ; SOURCE LINE # 90
  120.                                ; SOURCE LINE # 91
  121. ?C0004:
  122.                                ; SOURCE LINE # 92
  123.            JB      keyks,LOOP1
  124.                                ; SOURCE LINE # 93


  125.                                ; SOURCE LINE # 95
  126.            MOV     R7,#02CH
  127.            MOV     R6,#01H
  128.      R     LCALL   _delayms
  129.                                ; SOURCE LINE # 96
  130.            JB      keyks,LOOP1
  131.                                ; SOURCE LINE # 97
  132. ?C0024:
  133.                                ; SOURCE LINE # 98
  134.            JNB     keyks,?C0024
  135. ?C0025:
  136.                                ; SOURCE LINE # 100
  137.            SETB    TR0
  138. ?C0026:
  139.                                ; SOURCE LINE # 101
  140.                                ; SOURCE LINE # 102
  141.                                ; SOURCE LINE # 103
  142.      R     LCALL   djsxs
  143.                                ; SOURCE LINE # 104
  144.            JB      keytz,?C0028
  145.                                ; SOURCE LINE # 105
  146.                                ; SOURCE LINE # 106
  147.            MOV     R7,#02CH
  148.            MOV     R6,#01H
  149.      R     LCALL   _delayms
  150.                                ; SOURCE LINE # 107
  151.            JB      keytz,?C0028
  152.                                ; SOURCE LINE # 108
  153. ?C0030:
  154.                                ; SOURCE LINE # 109
  155.            JNB     keytz,?C0030
  156. ?C0031:
  157.                                ; SOURCE LINE # 110
  158.            CLR     TR0
  159.                                ; SOURCE LINE # 111
  160.                                ; SOURCE LINE # 112
  161. ?C0028:
  162.                                ; SOURCE LINE # 113
  163.            JB      keyks,?C0032
  164.                                ; SOURCE LINE # 114
  165.                                ; SOURCE LINE # 116
  166.            MOV     R7,#02CH
  167.            MOV     R6,#01H
  168.      R     LCALL   _delayms
  169.                                ; SOURCE LINE # 117
  170.            JB      keyks,?C0032
  171.                                ; SOURCE LINE # 118
  172. ?C0034:
  173.                                ; SOURCE LINE # 119
  174.            JNB     keyks,?C0034
  175. ?C0035:
  176.                                ; SOURCE LINE # 121
  177.            SETB    TR0
  178.                                ; SOURCE LINE # 122
  179.                                ; SOURCE LINE # 123
  180. ?C0032:
  181.                                ; SOURCE LINE # 125
  182.            JB      key1,?C0036
  183.            JNB     TR0,?C0036
  184.                                ; SOURCE LINE # 126
  185.                                ; SOURCE LINE # 127
  186.            CLR     spk


  187.                                ; SOURCE LINE # 128
  188.      R     LCALL   L?0151
  189.                                ; SOURCE LINE # 129
  190.            JB      key1,?C0036
  191.                                ; SOURCE LINE # 130
  192. ?C0038:
  193.                                ; SOURCE LINE # 131
  194.            JNB     key1,?C0038
  195. ?C0039:
  196.                                ; SOURCE LINE # 132
  197.            SETB    spk
  198. ?C0040:
  199.                                ; SOURCE LINE # 133
  200.                                ; SOURCE LINE # 134
  201.                                ; SOURCE LINE # 135
  202.            CLR     TR0
  203.                                ; SOURCE LINE # 136
  204.      R     LCALL   djsxs1
  205.                                ; SOURCE LINE # 137
  206.      R     LCALL   djsxs
  207.                                ; SOURCE LINE # 138
  208.            JB      keyqc,?C0040
  209.                                ; SOURCE LINE # 139
  210.                                ; SOURCE LINE # 140
  211.      R     LCALL   L?0151
  212.                                ; SOURCE LINE # 141
  213.            JB      keyqc,?C0040
  214.                                ; SOURCE LINE # 142
  215. ?C0044:
  216.                                ; SOURCE LINE # 143
  217.            JNB     keyqc,$ + 6H
  218.      R     LJMP    LOOP1
  219.            SJMP    ?C0044
  220.                                ; SOURCE LINE # 144
  221.                                ; SOURCE LINE # 145
  222.                                ; SOURCE LINE # 146
  223.                                ; SOURCE LINE # 147
  224.                                ; SOURCE LINE # 148
  225.                                ; SOURCE LINE # 149
  226. ?C0036:
  227.                                ; SOURCE LINE # 150
  228.            JB      key2,?C0046
  229.            JNB     TR0,?C0046
  230.                                ; SOURCE LINE # 151
  231.                                ; SOURCE LINE # 152
  232.            CLR     spk
  233.                                ; SOURCE LINE # 153
  234.      R     LCALL   L?0151
  235.                                ; SOURCE LINE # 154
  236.            JB      key2,?C0046
  237.                                ; SOURCE LINE # 155
  238. ?C0048:
  239.                                ; SOURCE LINE # 156
  240.            JNB     key2,?C0048
  241. ?C0049:
  242.                                ; SOURCE LINE # 157
  243.            SETB    spk
  244. ?C0050:
  245.                                ; SOURCE LINE # 158
  246.                                ; SOURCE LINE # 159
  247.                                ; SOURCE LINE # 160
  248.            CLR     TR0


  249.                                ; SOURCE LINE # 161
  250.      R     LCALL   djsxs2
  251.                                ; SOURCE LINE # 162
  252.      R     LCALL   djsxs
  253.                                ; SOURCE LINE # 163
  254.            JB      keyqc,?C0050
  255.                                ; SOURCE LINE # 164
  256.                                ; SOURCE LINE # 165
  257.      R     LCALL   L?0151
  258.                                ; SOURCE LINE # 166
  259.            JB      keyqc,?C0050
  260.                                ; SOURCE LINE # 167
  261. ?C0054:
  262.                                ; SOURCE LINE # 168
  263.            JNB     keyqc,$ + 6H
  264.      R     LJMP    LOOP1
  265.            SJMP    ?C0054
  266.                                ; SOURCE LINE # 169
  267.                                ; SOURCE LINE # 170
  268.                                ; SOURCE LINE # 171
  269.                                ; SOURCE LINE # 172
  270.                                ; SOURCE LINE # 173
  271.                                ; SOURCE LINE # 174
  272. ?C0046:
  273.                                ; SOURCE LINE # 175
  274.            JB      key3,?C0056
  275.            JNB     TR0,?C0056
  276.                                ; SOURCE LINE # 176
  277.                                ; SOURCE LINE # 177
  278.            CLR     spk
  279.                                ; SOURCE LINE # 178
  280.      R     LCALL   L?0151
  281.                                ; SOURCE LINE # 179
  282.            JB      key3,?C0056
  283.                                ; SOURCE LINE # 180
  284. ?C0058:
  285.                                ; SOURCE LINE # 181
  286.            JNB     key3,?C0058
  287. ?C0059:
  288.                                ; SOURCE LINE # 182
  289.            SETB    spk
  290. ?C0060:
  291.                                ; SOURCE LINE # 183
  292.                                ; SOURCE LINE # 184
  293.                                ; SOURCE LINE # 185
  294.            CLR     TR0
  295.                                ; SOURCE LINE # 186
  296.      R     LCALL   djsxs3
  297.                                ; SOURCE LINE # 187
  298.      R     LCALL   djsxs
  299.                                ; SOURCE LINE # 188
  300.            JB      keyqc,?C0060
  301.                                ; SOURCE LINE # 189
  302.                                ; SOURCE LINE # 190
  303.      R     LCALL   L?0151
  304.                                ; SOURCE LINE # 191
  305.            JB      keyqc,?C0060
  306.                                ; SOURCE LINE # 192
  307. ?C0064:
  308.                                ; SOURCE LINE # 193
  309.            JNB     keyqc,$ + 6H
  310.      R     LJMP    LOOP1


  311.            SJMP    ?C0064
  312.                                ; SOURCE LINE # 194
  313.                                ; SOURCE LINE # 195
  314.                                ; SOURCE LINE # 196
  315.                                ; SOURCE LINE # 197
  316.                                ; SOURCE LINE # 198
  317.                                ; SOURCE LINE # 199
  318. ?C0056:
  319.                                ; SOURCE LINE # 200
  320.            JB      key4,?C0066
  321.            JNB     TR0,?C0066
  322.                                ; SOURCE LINE # 201
  323.                                ; SOURCE LINE # 202
  324.            CLR     spk
  325.                                ; SOURCE LINE # 203
  326.      R     LCALL   L?0151
  327.                                ; SOURCE LINE # 204
  328.            JB      key4,?C0066
  329.                                ; SOURCE LINE # 205
  330. ?C0068:
  331.                                ; SOURCE LINE # 206
  332.            JNB     key4,?C0068
  333. ?C0069:
  334.                                ; SOURCE LINE # 207
  335.            SETB    spk
  336. ?C0070:
  337.                                ; SOURCE LINE # 208
  338.                                ; SOURCE LINE # 209
  339.                                ; SOURCE LINE # 210
  340.            CLR     TR0
  341.                                ; SOURCE LINE # 211
  342.      R     LCALL   djsxs4
  343.                                ; SOURCE LINE # 212
  344.      R     LCALL   djsxs
  345.                                ; SOURCE LINE # 213
  346.            JB      keyqc,?C0070
  347.                                ; SOURCE LINE # 214
  348.                                ; SOURCE LINE # 215
  349.      R     LCALL   L?0151
  350.                                ; SOURCE LINE # 216
  351.            JB      keyqc,?C0070
  352.                                ; SOURCE LINE # 217
  353. ?C0074:
  354.                                ; SOURCE LINE # 218
  355.            JNB     keyqc,$ + 6H
  356.      R     LJMP    LOOP1
  357.            SJMP    ?C0074
  358.                                ; SOURCE LINE # 219
  359.                                ; SOURCE LINE # 220
  360.                                ; SOURCE LINE # 221
  361.                                ; SOURCE LINE # 222
  362.                                ; SOURCE LINE # 223
  363.                                ; SOURCE LINE # 224
  364. ?C0066:
  365.                                ; SOURCE LINE # 225
  366.            JB      key5,?C0076
  367.            JNB     TR0,?C0076
  368.                                ; SOURCE LINE # 226
  369.                                ; SOURCE LINE # 227
  370.            CLR     spk
  371.                                ; SOURCE LINE # 228
  372.      R     LCALL   L?0151


  373.                                ; SOURCE LINE # 229
  374.            JB      key5,?C0076
  375.                                ; SOURCE LINE # 230
  376. ?C0078:
  377.                                ; SOURCE LINE # 231
  378.            JNB     key5,?C0078
  379. ?C0079:
  380.                                ; SOURCE LINE # 232
  381.            SETB    spk
  382. ?C0080:
  383.                                ; SOURCE LINE # 233
  384.                                ; SOURCE LINE # 234
  385.                                ; SOURCE LINE # 235
  386.            CLR     TR0
  387.                                ; SOURCE LINE # 236
  388.      R     LCALL   djsxs5
  389.                                ; SOURCE LINE # 237
  390.      R     LCALL   djsxs
  391.                                ; SOURCE LINE # 238
  392.            JB      keyqc,?C0080
  393.                                ; SOURCE LINE # 239
  394.                                ; SOURCE LINE # 240
  395.      R     LCALL   L?0151
  396.                                ; SOURCE LINE # 241
  397.            JB      keyqc,?C0080
  398.                                ; SOURCE LINE # 242
  399. ?C0084:
  400.                                ; SOURCE LINE # 243
  401.            JNB     keyqc,$ + 6H
  402.      R     LJMP    LOOP1
  403.            SJMP    ?C0084
  404.                                ; SOURCE LINE # 244
  405.                                ; SOURCE LINE # 245
  406.                                ; SOURCE LINE # 246
  407.                                ; SOURCE LINE # 247
  408.                                ; SOURCE LINE # 248
  409.                                ; SOURCE LINE # 249
  410. ?C0076:
  411.                                ; SOURCE LINE # 250
  412.            JB      key6,?C0086
  413.            JNB     TR0,?C0086
  414.                                ; SOURCE LINE # 251
  415.                                ; SOURCE LINE # 252
  416.            CLR     spk
  417.                                ; SOURCE LINE # 253
  418.      R     LCALL   L?0151
  419.                                ; SOURCE LINE # 254
  420.            JB      key6,?C0086
  421.                                ; SOURCE LINE # 255
  422. ?C0088:
  423.                                ; SOURCE LINE # 256
  424.            JNB     key6,?C0088
  425. ?C0089:
  426.                                ; SOURCE LINE # 257
  427.            SETB    spk
  428. ?C0090:
  429.                                ; SOURCE LINE # 258
  430.                                ; SOURCE LINE # 259
  431.                                ; SOURCE LINE # 260
  432.            CLR     TR0
  433.                                ; SOURCE LINE # 261
  434.      R     LCALL   djsxs6


  435.                                ; SOURCE LINE # 262
  436.      R     LCALL   djsxs
  437.                                ; SOURCE LINE # 263
  438.            JB      keyqc,?C0090
  439.                                ; SOURCE LINE # 264
  440.                                ; SOURCE LINE # 265
  441.      R     LCALL   L?0151
  442.                                ; SOURCE LINE # 266
  443.            JB      keyqc,?C0090
  444.                                ; SOURCE LINE # 267
  445. ?C0094:
  446.                                ; SOURCE LINE # 268
  447.            JNB     keyqc,$ + 6H
  448.      R     LJMP    LOOP1
  449.            SJMP    ?C0094
  450.                                ; SOURCE LINE # 269
  451.                                ; SOURCE LINE # 270
  452.                                ; SOURCE LINE # 271
  453.                                ; SOURCE LINE # 273
  454.                                ; SOURCE LINE # 274
  455.                                ; SOURCE LINE # 275
  456. ?C0086:
  457.                                ; SOURCE LINE # 276
  458.            JB      key7,?C0096
  459.            JNB     TR0,?C0096
  460.                                ; SOURCE LINE # 277
  461.                                ; SOURCE LINE # 278
  462.            CLR     spk
  463.                                ; SOURCE LINE # 279
  464.      R     LCALL   L?0151
  465.                                ; SOURCE LINE # 280
  466.            JB      key7,?C0096
  467.                                ; SOURCE LINE # 281
  468. ?C0098:
  469.                                ; SOURCE LINE # 282
  470.            JNB     key7,?C0098
  471. ?C0099:
  472.                                ; SOURCE LINE # 283
  473.            SETB    spk
  474. ?C0100:
  475.                                ; SOURCE LINE # 284
  476.                                ; SOURCE LINE # 285
  477.                                ; SOURCE LINE # 286
  478.            CLR     TR0
  479.                                ; SOURCE LINE # 287
  480.      R     LCALL   djsxs7
  481.                                ; SOURCE LINE # 288
  482.      R     LCALL   djsxs
  483.                                ; SOURCE LINE # 289
  484.            JB      keyqc,?C0100
  485.                                ; SOURCE LINE # 290
  486.                                ; SOURCE LINE # 291
  487.      R     LCALL   L?0151
  488.                                ; SOURCE LINE # 292
  489.            JB      keyqc,?C0100
  490.                                ; SOURCE LINE # 293
  491. ?C0104:
  492.                                ; SOURCE LINE # 294
  493.            JNB     keyqc,$ + 6H
  494.      R     LJMP    LOOP1
  495.            SJMP    ?C0104
  496.                                ; SOURCE LINE # 295


  497.                                ; SOURCE LINE # 296
  498.                                ; SOURCE LINE # 297
  499.                                ; SOURCE LINE # 298
  500.                                ; SOURCE LINE # 299
  501.                                ; SOURCE LINE # 300
  502. ?C0096:
  503.                                ; SOURCE LINE # 301
  504.            JB      key8,?C0106
  505.            JNB     TR0,?C0106
  506.                                ; SOURCE LINE # 302
  507.                                ; SOURCE LINE # 303
  508.            CLR     spk
  509.                                ; SOURCE LINE # 304
  510.      R     LCALL   L?0151
  511.                                ; SOURCE LINE # 305
  512.            JB      key8,?C0106
  513.                                ; SOURCE LINE # 306
  514. ?C0108:
  515.                                ; SOURCE LINE # 307
  516.            JNB     key8,?C0108
  517. ?C0110:
  518.                                ; SOURCE LINE # 309
  519.                                ; SOURCE LINE # 310
  520.                                ; SOURCE LINE # 311
  521.            CLR     TR0
  522.                                ; SOURCE LINE # 312
  523.            SETB    spk
  524.                                ; SOURCE LINE # 313
  525.      R     LCALL   djsxs8
  526.                                ; SOURCE LINE # 314
  527.      R     LCALL   djsxs
  528.                                ; SOURCE LINE # 315
  529.            JB      keyqc,?C0110
  530.                                ; SOURCE LINE # 316
  531.                                ; SOURCE LINE # 317
  532.      R     LCALL   L?0151
  533.                                ; SOURCE LINE # 318
  534.            JB      keyqc,?C0110
  535.                                ; SOURCE LINE # 319
  536. ?C0114:
  537.                                ; SOURCE LINE # 320
  538.            JNB     keyqc,$ + 6H
  539.      R     LJMP    LOOP1
  540.            SJMP    ?C0114
  541.                                ; SOURCE LINE # 321
  542.                                ; SOURCE LINE # 322
  543.                                ; SOURCE LINE # 323
  544.                                ; SOURCE LINE # 324
  545.                                ; SOURCE LINE # 325
  546.                                ; SOURCE LINE # 326
  547. ?C0106:
  548.                                ; SOURCE LINE # 327
  549.            SETB    C
  550.      R     MOV     A,djs+01H
  551.            SUBB    A,#05H
  552.      R     MOV     A,djs
  553.            XRL     A,#080H
  554.            SUBB    A,#080H
  555.            JNC     ?C0116
  556.            CLR     spk
  557. ?C0116:
  558.                                ; SOURCE LINE # 328


  559.      R     MOV     A,djs+01H
  560.      R     ORL     A,djs
  561.            JZ      $ + 5H
  562.      R     LJMP    ?C0026
  563.                                ; SOURCE LINE # 329
  564. ?C0118:
  565.                                ; SOURCE LINE # 330
  566.                                ; SOURCE LINE # 331
  567.                                ; SOURCE LINE # 332
  568.            JB      keyqc,?C0118
  569.                                ; SOURCE LINE # 333
  570.                                ; SOURCE LINE # 334
  571.      R     LCALL   L?0151
  572.                                ; SOURCE LINE # 335
  573.            JB      keyqc,?C0118
  574.                                ; SOURCE LINE # 336
  575. ?C0122:
  576.                                ; SOURCE LINE # 337
  577.            JNB     keyqc,?C0122
  578. ?C0123:
  579.                                ; SOURCE LINE # 338
  580.            SETB    spk
  581.                                ; SOURCE LINE # 339
  582.      R     LJMP    LOOP1
  583. ; FUNCTION main (END)

  584. ; FUNCTION L?0149 (BEGIN)
  585. L?0150:
  586.            CLR     smg1
  587. L?0151:
  588.            MOV     R7,#03H
  589.            MOV     R6,#00H
  590. ; FUNCTION _delayms (BEGIN)
  591.         _delayms:
  592.                                ; SOURCE LINE # 350
  593.         ;---- Variable 'i' assigned to Register 'R5' ----
  594.         ;---- Variable 'x' assigned to Register 'R6/R7' ----
  595.                                ; SOURCE LINE # 351
  596. ?C0125:
  597.                                ; SOURCE LINE # 353
  598.            MOV     A,R7
  599.            DEC     R7
  600.            MOV     R2,AR6
  601.            JNZ     ?C0146
  602.            DEC     R6
  603. ?C0146:
  604.            ORL     A,R2
  605.            JZ      ?C0130
  606.                                ; SOURCE LINE # 354
  607.                                ; SOURCE LINE # 355
  608.            MOV     R5,#0F4H
  609. ?C0127:
  610.            SETB    C
  611.            MOV     A,R5
  612.            XRL     A,#080H
  613.            SUBB    A,#080H
  614.            JC      ?C0125
  615.            DEC     R5
  616.            SJMP    ?C0127
  617.                                ; SOURCE LINE # 356
  618.                                ; SOURCE LINE # 357
  619. ?C0130:
  620.            RET     


  621. ; FUNCTION _delayms (END)

  622. ; FUNCTION Timer0_init (BEGIN)
  623.         Timer0_init:
  624.                                ; SOURCE LINE # 358
  625.                                ; SOURCE LINE # 359
  626.                                ; SOURCE LINE # 360
  627.            CLR     A
  628.      R     MOV     js,A
  629.      R     MOV     js+01H,A
  630.                                ; SOURCE LINE # 361
  631.            MOV     TMOD,#01H
  632.                                ; SOURCE LINE # 362
  633.            MOV     TH0,#03CH
  634.                                ; SOURCE LINE # 363
  635.            MOV     TL0,#0B0H
  636.                                ; SOURCE LINE # 365
  637.            SETB    ET0
  638.                                ; SOURCE LINE # 366
  639.            SETB    EA
  640.                                ; SOURCE LINE # 367
  641.            RET     
  642. ; FUNCTION Timer0_init (END)

  643. ; FUNCTION timer0 (BEGIN)
  644.            PUSH    ACC
  645.            PUSH    PSW
  646.                                ; SOURCE LINE # 368
  647.                                ; SOURCE LINE # 371
  648.            MOV     TH0,#03CH
  649.                                ; SOURCE LINE # 372
  650.            MOV     TL0,#0B0H
  651.                                ; SOURCE LINE # 373
  652.      R     INC     js+01H
  653.      R     MOV     A,js+01H
  654.            JNZ     ?C0147
  655.      R     INC     js
  656. ?C0147:
  657.                                ; SOURCE LINE # 374
  658.            CLR     C
  659.            SUBB    A,#014H
  660.      R     MOV     A,js
  661.            XRL     A,#080H
  662.            SUBB    A,#080H
  663.            JC      ?C0133
  664.                                ; SOURCE LINE # 375
  665.      R     MOV     js,#00H
  666.      R     MOV     js+01H,#00H
  667.                                ; SOURCE LINE # 376
  668.      R     MOV     A,djs+01H
  669.      R     DEC     djs+01H
  670.            JNZ     ?C0148
  671.      R     DEC     djs
  672. ?C0148:
  673.                                ; SOURCE LINE # 378
  674.                                ; SOURCE LINE # 379
  675. ?C0133:
  676.            POP     PSW
  677.            POP     ACC
  678.            RETI   
  679. ; FUNCTION timer0 (END)

  680. ; FUNCTION djsxs (BEGIN)
  681.                 djsxs:

  682.                                ; SOURCE LINE # 380
  683.                                ; SOURCE LINE # 381
  684.                                ; SOURCE LINE # 382
  685.      R     MOV     R6,djs
  686.      R     MOV     R7,djs+01H
  687.            MOV     R4,#00H
  688.            MOV     R5,#0AH
  689.      E     LCALL   ?C?SIDIV
  690.         ;---- Variable 'b1' assigned to Register 'R2/R3' ----
  691.            MOV     R3,AR7
  692.                                ; SOURCE LINE # 383
  693.      R     MOV     R6,djs
  694.      R     MOV     R7,djs+01H
  695.            MOV     R4,#00H
  696.            MOV     R5,#0AH
  697.      E     LCALL   ?C?SIDIV
  698.         ;---- Variable 'b2' assigned to Register 'DPTR' ----
  699.            MOV     DPL,R5
  700.                                ; SOURCE LINE # 384
  701.            MOV     A,R3
  702.            ADD     A,ACC
  703.      R     ADD     A,#LOW table
  704.            MOV     R0,A
  705.            INC     R0
  706.            MOV     A,@R0
  707.            MOV     P0,A
  708.                                ; SOURCE LINE # 385
  709.            CLR     smg2
  710.                                ; SOURCE LINE # 386
  711.      R     LCALL   L?0151
  712.                                ; SOURCE LINE # 387
  713.            SETB    smg2
  714.                                ; SOURCE LINE # 388
  715.            MOV     R7,DPL
  716.            MOV     A,R7
  717.            ADD     A,ACC
  718.      R     ADD     A,#LOW table
  719.            MOV     R0,A
  720.            INC     R0
  721.            MOV     A,@R0
  722.            MOV     P0,A
  723.                                ; SOURCE LINE # 389
  724.            CLR     smg3
  725.                                ; SOURCE LINE # 390
  726.      R     LCALL   L?0151
  727.                                ; SOURCE LINE # 391
  728.            SETB    smg3
  729.                                ; SOURCE LINE # 392
  730.            RET     
  731. ; FUNCTION djsxs (END)

  732. ; FUNCTION djsxs22 (BEGIN)
  733.                 djsxs22:
  734.                                ; SOURCE LINE # 393
  735.                                ; SOURCE LINE # 394
  736.                                ; SOURCE LINE # 395
  737.            MOV     P0,#040H
  738.                                ; SOURCE LINE # 396
  739.                                ; SOURCE LINE # 397
  740.      R     LCALL   L?0149
  741.                                ; SOURCE LINE # 398
  742.            SETB    smg1
  743.                                ; SOURCE LINE # 399


  744.            MOV     P0,#040H
  745.                                ; SOURCE LINE # 400
  746.            CLR     smg2
  747.                                ; SOURCE LINE # 401
  748.      R     LCALL   L?0151
  749.                                ; SOURCE LINE # 402
  750.            SETB    smg2
  751.                                ; SOURCE LINE # 403
  752.            MOV     P0,#040H
  753.                                ; SOURCE LINE # 404
  754.            CLR     smg3
  755.                                ; SOURCE LINE # 405
  756.      R     LCALL   L?0151
  757.                                ; SOURCE LINE # 406
  758.            SETB    smg3
  759.                                ; SOURCE LINE # 407
  760.            RET     
  761. ; FUNCTION djsxs22 (END)

  762. ; FUNCTION djsxs1 (BEGIN)
  763.                 djsxs1:
  764.                                ; SOURCE LINE # 408
  765.                                ; SOURCE LINE # 409
  766.                                ; SOURCE LINE # 410
  767.      R     MOV     P0,table+03H
  768.                                ; SOURCE LINE # 411
  769.                                ; SOURCE LINE # 412
  770.      R     LCALL   L?0149
  771.                                ; SOURCE LINE # 413
  772.            SETB    smg1
  773.                                ; SOURCE LINE # 414
  774.            RET     
  775. ; FUNCTION djsxs1 (END)

  776. ; FUNCTION djsxs2 (BEGIN)
  777.                 djsxs2:
  778.                                ; SOURCE LINE # 415
  779.                                ; SOURCE LINE # 416
  780.                                ; SOURCE LINE # 417
  781.      R     MOV     P0,table+05H
  782.                                ; SOURCE LINE # 418
  783.                                ; SOURCE LINE # 419
  784.      R     LCALL   L?0150
  785.                                ; SOURCE LINE # 420
  786.            SETB    smg1
  787.                                ; SOURCE LINE # 421
  788.            RET     
  789. ; FUNCTION djsxs2 (END)

  790. ; FUNCTION djsxs3 (BEGIN)
  791.                 djsxs3:
  792.                                ; SOURCE LINE # 422
  793.                                ; SOURCE LINE # 423
  794.                                ; SOURCE LINE # 424
  795.      R     MOV     P0,table+07H
  796.                                ; SOURCE LINE # 425
  797.                                ; SOURCE LINE # 426
  798.      R     LCALL   L?0150
  799.                                ; SOURCE LINE # 427
  800.            SETB    smg1
  801.                                ; SOURCE LINE # 428
  802.            RET     
  803. ; FUNCTION djsxs3 (END)

  804. ; FUNCTION djsxs4 (BEGIN)
  805.                 djsxs4:


  806.                                ; SOURCE LINE # 429
  807.                                ; SOURCE LINE # 430
  808.                                ; SOURCE LINE # 431
  809.      R     MOV     P0,table+09H
  810.                                ; SOURCE LINE # 432
  811.                                ; SOURCE LINE # 433
  812.      R     LCALL   L?0150
  813.                                ; SOURCE LINE # 434
  814.            SETB    smg1
  815.                                ; SOURCE LINE # 435
  816.            RET     
  817. ; FUNCTION djsxs4 (END)

  818. ; FUNCTION djsxs5 (BEGIN)
  819.                 djsxs5:
  820.                                ; SOURCE LINE # 436
  821.                                ; SOURCE LINE # 437
  822.                                ; SOURCE LINE # 438
  823.      R     MOV     P0,table+0BH
  824.                                ; SOURCE LINE # 439
  825.                                ; SOURCE LINE # 440
  826.      R     LCALL   L?0150
  827.                                ; SOURCE LINE # 441
  828.            SETB    smg1
  829.                                ; SOURCE LINE # 442
  830.            RET     
  831. ; FUNCTION djsxs5 (END)

  832. ; FUNCTION djsxs6 (BEGIN)
  833.                 djsxs6:
  834.                                ; SOURCE LINE # 443
  835.                                ; SOURCE LINE # 444
  836.                                ; SOURCE LINE # 445
  837.      R     MOV     P0,table+0DH
  838.                                ; SOURCE LINE # 446
  839.                                ; SOURCE LINE # 447
  840.      R     LCALL   L?0150
  841.                                ; SOURCE LINE # 448
  842.            SETB    smg1
  843.                                ; SOURCE LINE # 449
  844.            RET     
  845. ; FUNCTION djsxs6 (END)

  846. ; FUNCTION djsxs7 (BEGIN)
  847.                 djsxs7:
  848.                                ; SOURCE LINE # 450
  849.                                ; SOURCE LINE # 451
  850.                                ; SOURCE LINE # 452
  851.      R     MOV     P0,table+0FH
  852.                                ; SOURCE LINE # 453
  853.                                ; SOURCE LINE # 454
  854.      R     LCALL   L?0150
  855.                                ; SOURCE LINE # 455
  856.            SETB    smg1
  857.                                ; SOURCE LINE # 456
  858.            RET     
  859. ; FUNCTION djsxs7 (END)

  860. ; FUNCTION djsxs8 (BEGIN)
  861.                 djsxs8:
  862.                                ; SOURCE LINE # 457
  863.                                ; SOURCE LINE # 458
  864.                                ; SOURCE LINE # 459
  865.      R     MOV     P0,table+011H
  866.                                ; SOURCE LINE # 460
  867.                                ; SOURCE LINE # 461


  868.      R     LCALL   L?0150
  869.                                ; SOURCE LINE # 462
  870.            SETB    smg1
  871.                                ; SOURCE LINE # 463
  872.            RET     
  873. ; FUNCTION djsxs8 (END)
  874. TABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H    ;共阴字码表
  875. END
复制代码


OctalContestResponder.zip

39 KB, 下载次数: 2

回复

使用道具 举报

地板
ID:158460 发表于 2016-12-30 13:10 | 只看该作者

多谢大神帮忙啊~~~~
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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