找回密码
 立即注册

QQ登录

只需一步,快速开始

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

求大神帮下忙,下面的如何改为c语言程序?

[复制链接]
跳转到指定楼层
楼主
ID:503530 发表于 2019-4-2 19:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
XinHao   EQU  P1.0
Light     EQU   P2.0
ORG    0000H
AJMP   MAIN
------------------MAIN-----------------
MAIN:      CLR  light             ;初始时灯泡熄灭
Check:      SETB  XinHao
                      JNB  XinHao,yanshi      ;检测是否有信号
                      LJMP  Check
yanshi:      LCALLdelay              ;延时防信号抖动
                      SETB  XinHao
                      JNB   XinHao,dianliang    ;有,点亮灯泡
                      LJMP  Check
-------------------dianliang--------------------
dianliang:     SETB light             ;点亮灯泡
LOOP:          SETB  XinHao
               JB   XinHao,yanshi1     ;判断是否无信号
                    LJMP LOOP   
yanshi1:     LCALLdelay             ;延时防抖动
                    SETB XinHao
                    JB   XinHao,yanshi8    ;再次确定无信号
                    LJMP LOOP
yanshi2:     LCALL delay1            ;利用定时器延时两分钟
                    CLR  light             ;熄灭灯泡
                    RET
--------------------delay-------------------
Delay:     MOV  R0, #100
D1:             MOV   R1, #100
D2:       DJNZ R1, D2
                  DJNZ  R0, D1
                RET
----------定时器延时两分钟----------
delay1:    MOV  R2, #180
           MOV  IE, #00H
           MOV  TMOD, #01H
                   SETB TR0
                   CLR  TF0
LOOP0:     MOV  TL0, #0FH
                    MOV  TH0, #00H
LOOP1:     JBC  TF0,LOOP2         ;定时是否溢出
                    JMP  LOOP1
LOOP2:     DJNZ   R2, LOOP0
           MOV  TMOD, #00H
           CLR  TR0
                   CLR  TF0
                   RET
---------------------END---------------------
           END

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

使用道具 举报

沙发
ID:155507 发表于 2019-4-7 13:08 | 只看该作者
给你改了一下试试。

  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit XinHao =P1^0;
  5. sbit Light  =P2^0;

  6. void Delay(void)
  7. {
  8.         uint x, y;
  9.        
  10.         for(x=100;x>0;x--)
  11.            for(y=100;y>0;y--);
  12. }

  13. void delay1(void) //定时器延时两分钟
  14. {
  15.         uchar count=180;
  16.         TMOD=0x01;     //定时器0工作方式1
  17.         TR0=1;       //启动定时器

  18.         TH0=0;
  19.         do{
  20.                 TF0=0;
  21.                 TL0=0x0F;       
  22.                 while(!TF0);   //定时是否溢出
  23.         } while((count--) > 0);
  24.         TR0=0;
  25.         TF0=0;

  26. }

  27. void dianliang(void)
  28. {
  29.         Light  = 1; //点亮灯泡
  30.         XinHao = 1;
  31.         if(XinHao == 1)  //判断是否无信号
  32.         {
  33.                 Delay(); //延时防抖动
  34.                 XinHao = 1;
  35.                 if(XinHao == 1) //再次确定无信号
  36.                 {
  37.                         delay1(); //利用定时器延时两分钟
  38.                         Light  = 0; //熄灭灯泡
  39.                 }
  40.         }
  41. }

  42. void main(void)
  43. {
  44.         Light  = 0; //初始时灯泡熄灭
  45.         while(1)
  46.         {
  47.                 XinHao = 1;
  48.                 if(XinHao == 0)  //检测是否有信号
  49.                 {
  50.                         Delay(); //延时防信号抖动
  51.                         XinHao = 1;
  52.                         if(XinHao == 0)
  53.                         {
  54.                                 dianliang(); //有,点亮灯泡
  55.                         }
  56.                 }
  57.         }
  58. }


复制代码
回复

使用道具 举报

板凳
ID:503530 发表于 2019-4-9 16:34 | 只看该作者
angmall 发表于 2019-4-7 13:08
给你改了一下试试。

特别感谢
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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