找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机电子跑表 仿真图 缺程序

[复制链接]
跳转到指定楼层
楼主

电子跑表 .zip

64.16 KB, 下载次数: 5

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

使用道具 举报

沙发
ID:476772 发表于 2022-12-18 13:50 | 只看该作者
这个要根据实际需求编写程序 ,编译后的HEX文件加载到单片机中。
回复

使用道具 举报

板凳
ID:155507 发表于 2022-12-18 17:20 | 只看该作者
51单片机电子跑表课程设计

http://www.51hei.com/bbs/dpj-119818-1.html


  1. #include <reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uchar code Tab0[]=     //定义数码管数组,没有小数点
  5. {
  6.     0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
  7. };
  8. uchar code Tab1[]=      //定义数码管数组,有小数点
  9. {            
  10.     0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef
  11. };
  12. uchar miaobiao[80];               //定义存储秒表数组
  13. sbit K1=P3^2;                     //模式选择键,本程序三种模式,分别是时间显示、秒表、时间设置
  14. sbit K2=P3^3;                     //设置时间时加一/开始(暂停)秒表按键
  15. sbit K3=P3^4;                     //切换设置位/清零秒表按键
  16. sbit K4=P3^5;                     //秒记录
  17. void Delay(uchar x);              //延时函数
  18. void Display0();                  //时间显示函数
  19. void Display1();                  //秒表显示函数
  20. void Display2();                  //时间设置显示函数
  21. void Display3();                  //保存的秒表显示函数
  22. void Init();                      //中断初始化函数
  23. void Mode_K1();                   //模式切换函数
  24. void KEY_MiaoBiao();              //检测秒表操作按键
  25. void KEY_Time_Set();              //检测时间设置按键
  26. void KEY_MiaoBiao_keep();              //检测秒表记录显示按键操作            
  27. uchar Hours=12,Minutes=00,seconds=00;                       //分别定义三个变量表示时、分、秒
  28. uchar Time0_bit=0;                                          //用于定时器0的溢出标志
  29. bit Set_Time=0;                                             //设置时 闪烁时长的标志位
  30. bit Set0=0;                                                                      //设置时间标志,确定是设置‘分’还设置‘时’
  31. uchar K1_bit=0,m=0;                                                          //用于模式切换的标志
  32. uchar Miao_Biao0,Miao_Biao1,Miao_Biao2,Miao_Biao3,Miao_Biao4;                //用于秒表的变量
  33. uchar Miao_Biao11,Miao_Biao22,Miao_Biao33,Miao_Biao44;      //用于保存秒表显示时的变量
  34. void main()
  35. {
  36.     Init();                                               //中断初始化
  37.     while(1)                                              //死循环
  38.     {
  39.         Mode_K1();                                        //模式扫描
  40.         switch(K1_bit)                                    //模式选择
  41.         {
  42.             case 0:
  43.                 {
  44.                     Display0();                             //显示时间                              
  45.                     break;
  46.                 }
  47.             case 1:
  48.                 {
  49.                     Display1();                             //显示秒表
  50.                     KEY_MiaoBiao();                         //扫描秒表操作
  51.                     break;
  52.                 }
  53.             case 2:
  54.                 {
  55.                     Display2();                            //设置时间时的显示程序,可闪烁定位
  56.                     KEY_Time_Set();                        //扫描按键
  57.                     break;
  58.                 }
  59.             case 3:
  60.                 {
  61.                     Display3();                             //显示秒表
  62.                     KEY_MiaoBiao_keep();                    //扫描秒表操作
  63.                     break;
  64.                 }
  65.         }
  66.     }
  67. }
  68. void KEY_Time_Set()                                         //设置时间时的按键扫描函数
  69. {
  70.     if(K1_bit==2)                                           //判断是否为时间设置模式
  71.     {
  72.         if(K2==0)                                           //K2有按下(下同)
  73.         {
  74.             Delay(10);                                      //延时消抖(下同)
  75.             if(K2==0)                                       //再次检测是否为误按
  76.             {
  77.                 if(Set0==0)                 //检测是设置‘时’还是分,Set0为0时设置‘分’,Set0为1时设置‘时’
  78.                 {
  79.                     Minutes++;              //‘分’加1
  80.                     if(Minutes==60)              //当'分'加到60时,重新赋值0
  81.                         Minutes=0;
  82.                 }
  83.                 else
  84.                 {
  85.                     Hours++;                  //‘时’加1
  86.                     if(Hours==24)                //当'时'加到24时,重新赋值0
  87.                         Hours=0;
  88.                 }
  89.                 while(!K2);//按键松开检测,消除松开按键时的抖动干扰
  90.             }
  91.         }
  92.         if(K3==0)
  93.         {
  94.             Delay(10);
  95.             if(K3==0)
  96.             {
  97.                 Set0=~Set0;              //K3每按一次Set0取反,时分切换,Set0为0时设置‘分’,Set0为1时设置‘时’
  98.                 while(!K3);
  99.             }            
  100.         }
  101.     }
  102. }
  103. void KEY_MiaoBiao()          //检测秒表按键操作
  104. {
  105.     if(K1_bit==1)                       //判断是否为秒表模式
  106.     {
  107.         if(K2==0)
  108.         {
  109.             Delay(10);
  110.             if(K2==0)
  111.             {
  112.                 TR1=~TR1;                  //K2每按一次TR1取反,0暂停或1开始定时器1,达到暂停或开始秒表的目的
  113.                 while(!K2);
  114.             }
  115.         }
  116.         if(K4==0)                          //当K4按下时秒表记录一组数据
  117.         {
  118.             Delay(10);
  119.             if(K4==0)
  120.             {
  121.                 miaobiao[4*m]=Miao_Biao1;
  122.                 miaobiao[4*m+1]=Miao_Biao2;
  123.                 miaobiao[4*m+2]=Miao_Biao3;
  124.                 miaobiao[4*m+3]=Miao_Biao4;
  125.                 m++;
  126.                 while(!K4);
  127.             }            
  128.         }
  129.         if(K3==0)
  130.         {
  131.             Delay(10);
  132.             if(K3==0)                            //当K3按下时秒表所有数据清零,并停止定时器1
  133.             {
  134.                 uchar i;
  135.                 for(i=0;i<81;i++)
  136.                 {
  137.                     miaobiao[i]=0;              //清除所有秒记录数据
  138.                 }
  139.                 TR1=0;                          //停止定时器1
  140.                 Miao_Biao0=0;                   //清零数据
  141.                 Miao_Biao1=0;
  142.                 Miao_Biao2=0;
  143.                 Miao_Biao3=0;
  144.                 Miao_Biao4=0;
  145.                 m=0;                            //秒表记录清零
  146.                 while(!K3);
  147.             }
  148.         }
  149.     }
  150. }
  151. void KEY_MiaoBiao_keep()                        //检测秒表记录显示按键操作
  152. {
  153.     if(K1_bit==3)                               //判断是否为秒表记录显示模式
  154.     {
  155.                                                                                    
  156.         if(K2==0)
  157.         {
  158.             Delay(10);
  159.             if(K2==0)
  160.             {
  161.                 m++;
  162.                 while(!K2);
  163.             }
  164.         }
  165.         Miao_Biao11=miaobiao[4*m];
  166.         Miao_Biao22=miaobiao[4*m+1];
  167.         Miao_Biao33=miaobiao[4*m+2];
  168.         Miao_Biao44=miaobiao[4*m+3];
  169.         if(K3==0)
  170.         {
  171.             Delay(10);
  172.             if(K3==0)                            //当K3按下时秒表所有数据清零,并停止定时器1
  173.             {
  174.                 uchar i;
  175.                 for(i=0;i<81;i++)
  176.                 {
  177.                     miaobiao[i]=0;              //清除所有秒记录数据
  178.                 }
  179.                 while(!K3);
  180.             }
  181.         }
  182.     }
  183. }
  184. void Mode_K1()              //模式选择键,本程序三种模式,分别是时间显示、秒表、时间设置
  185. {
  186.     if(K1==0)
  187.     {
  188.         Delay(10);
  189.         if(K1==0)
  190.         {
  191.             K1_bit++;
  192.         //    if(K1_bit==1) m=0;
  193.             if(K1_bit==3) m=0;
  194.             if(K1_bit==4)
  195.             {
  196.                 K1_bit=0;
  197.             }
  198.             while(!K1);


  199. /***********************************************************************
  200. *************当K1_bit为0时显示时钟,为1时进入秒表,*********************
  201. *******************为2时进入时间设置模式,3时进入秒表记录显示***********
  202. ***********************************************************************/
  203.         }
  204.     }
  205. }
  206. void Time1() interrupt 3          //定时器1函数
  207. {
  208.     TH1=(65536-50000)/256;                  //重装初值
  209.     TL1=(65536-50000)%256;
  210.     Miao_Biao0++;
  211.     if(Miao_Biao0==2)                       //以下为秒表数据处理,每两次循环进行一次操作
  212.     {
  213.         Miao_Biao0=0;
  214.         Miao_Biao1++;                       //Miao_Biao1每加1次为100ms
  215.         if(Miao_Biao1==10)
  216.         {
  217.             Miao_Biao1=0;
  218.             Miao_Biao2++;
  219.             if(Miao_Biao2==60)
  220.             {
  221.                 Miao_Biao2=0;
  222.                 Miao_Biao3++;
  223.                 if(Miao_Biao3==60)
  224.                 {
  225.                     Miao_Biao3=0;
  226.                     Miao_Biao4++;
  227.                     if(Miao_Biao4==10)
  228.                     Miao_Biao4=0;
  229.                 }
  230.             }
  231.         }
  232.     }
  233. }
  234. void Time0() interrupt 1                                        //定时器0函数
  235. {
  236.     TH0=(65536-50000)/256;                                      //重装初值
  237.     TL0=(65536-50000)%256;
  238.     Time0_bit++;
  239.     if((Time0_bit%10)==0)                                       //每溢出10次Time0_bit取反一次
  240.     Set_Time=~Set_Time;                                         //0.5秒闪烁一次
  241.     if(Time0_bit==20)                                           //以下为时间数据处理
  242.     {
  243.         Time0_bit=0;
  244.         seconds++;
  245.         if(seconds==60)
  246.         {
  247.             seconds=0;
  248.             Minutes++;
  249.             if(Minutes==60)
  250.             {
  251.                 Minutes=0;
  252.                 Hours++;
  253.                 if(Hours==24)
  254.                 {
  255.                     Hours=0;
  256.                 }
  257.             }
  258.         }
  259.     }
  260. }
  261. void Init()                                       //中断初始化函数
  262. {
  263.     EA=1;                                         //开总中断
  264.     TMOD=0X11;                                    //定时器工作方式选择,定时器0和定时器1都选择第1种工作方式
  265.     TH0=(65536-50000)/256;                        //定时器0装初值,定时50ms
  266.     TL0=(65536-50000)%256;
  267.     ET0=1;                                        //开定时器0开关
  268.     TR0=1;                                        //开定时器0小开关
  269.     TH1=(65536-50000)/256;                        //定时器1装初值,定时50ms
  270.     TL1=(65536-50000)%256;
  271.     ET1=1;                                        //开定时器1开关
  272.     TR1=0;                                        //关定时器1小开关
  273. }
  274. void Display3()              //显示保存的秒表
  275. {
  276.     P0=Tab0[Miao_Biao11%10];                            //显示1/10秒的个位
  277.     P1=0xdf;                                                                      //段选
  278.     Delay(10);                                                                    //延时
  279.     P0=0X00;                                                                      //消隐
  280.     P0=Tab1[Miao_Biao22%10];                            //显示秒的个位,需要加上小数点做分隔符
  281.     P1=0xef;                                                                      //段选
  282.     Delay(10);                                                                    //延时
  283.     P0=0X00;                                                                      //消隐
  284.     P0=Tab0[Miao_Biao22/10];                            //显示秒的十位
  285.     P1=0xf7;                                                                      //段选
  286.     Delay(10);                                                                    //延时
  287.     P0=0X00;                                                                      //消隐
  288.     P0=Tab1[Miao_Biao33%10];                            //显示分的个位,需要加上小数点做分隔符
  289.     P1=0xfb;                                                                      //段选
  290.     Delay(10);                                                                    //延时
  291.     P0=0X00;                                                                      //消隐
  292.     P0=Tab0[Miao_Biao33/10];                            //显示分的十位
  293.     P1=0xfd;                                                                      //段选
  294.     Delay(10);                                                                    //延时
  295.     P0=0X00;                                                                      //消隐
  296.     P0=Tab1[Miao_Biao44%10];                            //显示时的个位,需要加上小数点做分隔符
  297.     P1=0xfe;                                                                      //段选
  298.     Delay(10);                                                                    //延时
  299.     P0=0X00;                                                                      //消隐
  300. }
  301. void Display2()              //时间设置时的显示函数            
  302. {
  303.     if(Set0==0)                                         //判断是否为设置‘时’还是‘分’
  304.     {
  305.         P0=Tab0[seconds%10];                            //显示秒的个位
  306.         P1=0xdf;                                                                      //段选
  307.         Delay(10);                                                                    //延时
  308.         P0=0X00;                                                                      //消隐
  309.         P0=Tab0[seconds/10];                            //显示秒的十位
  310.         P1=0xef;                                                                      //段选
  311.         Delay(10);                                                                    //延时
  312.         P0=0X00;                                                                      //消隐
  313.         if(Set_Time)                                                        //这个if语句实现分钟以0.5秒的频率闪烁
  314.         {
  315.             P0=Tab1[Minutes%10];              //显示分的个位,需要加上小数点做分隔符
  316.             P1=0xf7;                                                                      //段选
  317.             Delay(10);                                                                    //延时
  318.             P0=0X00;                                                                      //消隐
  319.             P0=Tab0[Minutes/10];                            //显示分的十位
  320.             P1=0xfb;                                                                      //段选
  321.             Delay(10);                                                                    //延时
  322.             P0=0X00;                                                                      //消隐
  323.         }
  324.         else
  325.         {
  326.             P0=0x00;                            //显示分的个位,需要加上小数点做分隔符
  327.             P1=0xf7;                                                                      //段选
  328.             Delay(10);                                                                    //延时
  329.             P0=0X00;                                                                      //消隐
  330.             P0=0x00;                                      //显示分的十位
  331.             P1=0xfb;                                                                      //段选
  332.             Delay(10);                                                                    //延时
  333.             P0=0X00;                                                                      //消隐
  334.         }
  335.         P0=Tab1[Hours%10];              //显示时的个位,需要加上小数点做分隔符
  336.         P1=0xfd;                                                                      //段选
  337.         Delay(10);                                                                    //延时
  338.         P0=0X00;                                                                      //消隐
  339.         P0=Tab0[Hours/10];                            //显示时的十位
  340.         P1=0xfe;                                                                      //段选
  341.         Delay(10);                                                                    //延时
  342.         P0=0X00;                                                                      //消隐
  343.     }
  344.     else                                          //‘时’钟闪烁
  345.     {
  346.         P0=Tab0[seconds%10];                            //显示秒的个位
  347.         P1=0xdf;                                                                      //段选
  348.         Delay(10);                                                                    //延时
  349.         P0=0X00;                                                                      //消隐
  350.         P0=Tab0[seconds/10];                            //显示秒的十位
  351.         P1=0xef;                                                                      //段选
  352.         Delay(10);                                                                    //延时
  353.         P0=0X00;                                                                      //消隐
  354.         P0=Tab1[Minutes%10];                            //显示分的个位,需要加上小数点做分隔符
  355.         P1=0xf7;                                                                      //段选
  356.         Delay(10);                                                                    //延时
  357.         P0=0X00;                                                                      //消隐
  358.         P0=Tab0[Minutes/10];                            //显示分的十位
  359.         P1=0xfb;                                                                      //段选
  360.         Delay(10);                                                                    //延时
  361.         P0=0X00;                                                                      //消隐
  362.         if(Set_Time)                                                        //这个if语句实现‘时’钟以0.5秒的频率闪烁
  363.         {
  364.             P0=Tab1[Hours%10];              //显示时的个位,需要加上小数点做分隔符
  365.             P1=0xfd;                                                                      //段选
  366.             Delay(10);                                                                    //延时
  367.             P0=0X00;                                                                      //消隐
  368.             P0=Tab0[Hours/10];                            //显示时的十位
  369.             P1=0xfe;                                                                      //段选
  370.             Delay(10);                                                                    //延时
  371.             P0=0X00;                                                                      //消隐
  372.         }
  373.         else
  374.         {
  375.             P0=0x00;                                          //显示时的个位,需要加上小数点做分隔符
  376.             P1=0xFF;                                          //段选
  377.             Delay(10);                                        //延时
  378.             P0=0X00;                                          //消隐
  379.             P0=0X00;                                          //显示时的十位
  380.             P1=0xFF;                                          //段选
  381.             Delay(10);                                        //延时
  382.             P0=0X00;                                          //消隐                                   
  383.         }                           
  384.     }
  385. }
  386. void Display1()              //显示秒表
  387. {
  388.     P0=Tab0[Miao_Biao1%10];                            //显示1/10秒的个位
  389.     P1=0xdf;                                                                      //段选
  390.     Delay(10);                                                                    //延时
  391.     P0=0X00;                                                                      //消隐
  392.     P0=Tab1[Miao_Biao2%10];                            //显示秒的个位,需要加上小数点做分隔符
  393.     P1=0xef;                                                                      //段选
  394.     Delay(10);                                                                    //延时
  395.     P0=0X00;                                                                      //消隐
  396.     P0=Tab0[Miao_Biao2/10];                            //显示秒的十位
  397.     P1=0xf7;                                                                      //段选
  398.     Delay(10);                                                                    //延时
  399.     P0=0X00;                                                                      //消隐
  400.     P0=Tab1[Miao_Biao3%10];                            //显示分的个位,需要加上小数点做分隔符
  401.     P1=0xfb;                                                                      //段选
  402.     Delay(10);                                                                    //延时
  403.     P0=0X00;                                                                      //消隐
  404.     P0=Tab0[Miao_Biao3/10];                            //显示分的十位
  405.     P1=0xfd;                                                                      //段选
  406.     Delay(10);                                                                    //延时
  407.     P0=0X00;                                                                      //消隐
  408.     P0=Tab1[Miao_Biao4%10];                            //显示时的个位,需要加上小数点做分隔符
  409.     P1=0xfe;                                                                      //段选
  410.     Delay(10);                                                                    //延时
  411.     P0=0X00;                                                                      //消隐
  412. }
  413. void Display0()              //显示时钟
  414. {
  415.     P0=Tab0[seconds%10];                            //显示秒的个位
  416.     P1=0xdf;                                                                      //段选
  417.     Delay(10);                                                                    //延时
  418.     P0=0X00;                                                                      //消隐
  419.     P0=Tab0[seconds/10];                            //显示秒的十位
  420.     P1=0xef;                                                                      //段选
  421.     Delay(10);                                                                    //延时
  422.     P0=0X00;                                                                      //消隐
  423.     P0=Tab1[Minutes%10];                            //显示分的个位,需要加上小数点做分隔符
  424.     P1=0xf7;                                                                      //段选
  425.     Delay(10);                                                                    //延时
  426.     P0=0X00;                                                                      //消隐
  427.     P0=Tab0[Minutes/10];                            //显示分的十位
  428.     P1=0xfb;                                                                      //段选
  429.     Delay(10);                                                                    //延时
  430.     P0=0X00;                                                                      //消隐
  431.     P0=Tab1[Hours%10];                                          //显示时的个位,需要加上小数点做分隔符
  432.     P1=0xfd;                                                                      //段选
  433.     Delay(10);                                                                    //延时
  434.     P0=0X00;                                                                      //消隐
  435.     P0=Tab0[Hours/10];                                          //显示时的十位
  436.     P1=0xfe;                                                                      //段选
  437.     Delay(10);                                                                    //延时
  438.     P0=0X00;                                                                      //消隐
  439. }
  440. void Delay(uchar x)          //延时
  441. {
  442.     uchar i,j;
  443.     for(i=x;i>0;i--)
  444.                   for(j=110;j>0;j--);
  445. }


复制代码



回复

使用道具 举报

地板
ID:883242 发表于 2022-12-18 21:43 | 只看该作者
  1. $CODE
  2. NEW$START: DO;
  3. $INCLUDE(REG51.DCL)
  4. DECLARE SEG$A LITERALLY '1';
  5. DECLARE SEG$B LITERALLY '2';
  6. DECLARE SEG$C LITERALLY '4';
  7. DECLARE SEG$D LITERALLY '8';
  8. DECLARE SEG$E LITERALLY '16';
  9. DECLARE SEG$F LITERALLY '32';
  10. DECLARE SEG$G LITERALLY '64';
  11. DECLARE SEG$DP LITERALLY '128';
  12. DECLARE SEGS(10) BYTE CONSTANT (
  13.   SEG$A+SEG$B+SEG$C+SEG$D+SEG$E+SEG$F,
  14.   SEG$B+SEG$C,
  15.   SEG$A+SEG$B+SEG$D+SEG$E+SEG$G,
  16.   SEG$A+SEG$B+SEG$C+SEG$D+SEG$G,
  17.   SEG$B+SEG$C+SEG$F+SEG$G,
  18.   SEG$A+SEG$C+SEG$D+SEG$F+SEG$G,
  19.   SEG$A+SEG$C+SEG$D+SEG$E+SEG$F+SEG$G,
  20.   SEG$A+SEG$B+SEG$C,
  21.   SEG$A+SEG$B+SEG$C+SEG$D+SEG$E+SEG$F+SEG$G,
  22.   SEG$A+SEG$B+SEG$C+SEG$D+SEG$F+SEG$G);
  23. DECLARE COUNT BYTE,DECMS WORD, VALUE WORD,DISPLAYBUFFER(7) BYTE,DEBUT BIT;
  24. DECLARE B0 BIT AT   (90H) REGISTER,
  25.   B1 BIT AT   (91H) REGISTER,
  26.   B2 BIT AT   (92H) REGISTER,
  27.   B3 BIT AT   (93H) REGISTER,
  28.   B4 BIT AT   (94H) REGISTER,
  29.   B5 BIT AT   (95H) REGISTER,
  30.   P32 BIT AT   (0B2H) REGISTER,
  31.   P33 BIT AT   (0B3H) REGISTER,
  32.   P34 BIT AT   (0B4H) REGISTER,
  33.   P35 BIT AT   (0B5H) REGISTER;
  34.   
  35. INT_T0: PROCEDURE INTERRUPT 1 USING 1;
  36.   TH0=HIGH(65535-19999);
  37.   TL0=LOW(65535-19999);
  38.   IF DEBUT THEN DECMS=DECMS+1;
  39.   COUNT=COUNT+1;
  40.   IF COUNT>7 THEN COUNT=0;
  41.   P1=0FFH;
  42.   DO CASE COUNT;
  43.     DO;
  44.       B0=0;
  45.           P0=DISPLAYBUFFER(5);
  46.         END;
  47.     DO;
  48.       B1=0;
  49.           P0=DISPLAYBUFFER(4);
  50.         END;
  51.     DO;
  52.       B2=0;
  53.           P0=DISPLAYBUFFER(3);
  54.         END;
  55.     DO;
  56.       B3=0;
  57.           P0=DISPLAYBUFFER(2);
  58.         END;
  59.     DO;
  60.       B4=0;
  61.           P0=DISPLAYBUFFER(1);
  62.         END;
  63.     DO;
  64.       B5=0;
  65.           P0=DISPLAYBUFFER(0);
  66.         END;
  67.   END;
  68.   RETURN;
  69. END INT_T0;
  70. MPROG: DO;
  71.   DECLARE I BYTE, TEMPORARY WORD;
  72.   VALUE=0;
  73.   DECMS=0;
  74.   IE=62H;
  75.   TMOD=1;
  76.   TH0=HIGH(65535-9999);
  77.   TL0=LOW(65535-9999);
  78.   TCON=10H;
  79.   ENABLE;
  80. LOOP:
  81.   CALL TIME(250);
  82.   TEMPORARY=DECMS;
  83.   DO I=0 TO 5;
  84.     DISPLAYBUFFER(I)=SEGS(LOW(TEMPORARY MOD 10));
  85.         TEMPORARY=TEMPORARY/10;
  86.   END;
  87.   IF DEBUT THEN DISPLAYBUFFER(2)=DISPLAYBUFFER(2)+SEG$DP;
  88.   ELSE DISPLAYBUFFER(2)=DISPLAYBUFFER(2)AND 7FH;
  89.   IF NOT P32 THEN DEBUT=1;
  90.   IF NOT P33 THEN DEBUT=0;
  91.   IF NOT P35 THEN DECMS=0;
  92.   GOTO LOOP;
  93. END MPROG;
  94. END NEW$START;
复制代码

我也是闲的,用1982年的PL/M-51写了一遍,测试通过。
回复

使用道具 举报

5#
ID:213173 发表于 2022-12-19 08:21 | 只看该作者
来一个有程序有仿真的


6位百分秒表 仿真.rar (128.37 KB, 下载次数: 3)

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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