标题: 求大神帮下忙,下面的如何改为c语言程序? [打印本页]
作者: dream602 时间: 2019-4-2 19:58
标题: 求大神帮下忙,下面的如何改为c语言程序?
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
作者: angmall 时间: 2019-4-7 13:08
给你改了一下试试。
- #include<reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit XinHao =P1^0;
- sbit Light =P2^0;
- void Delay(void)
- {
- uint x, y;
-
- for(x=100;x>0;x--)
- for(y=100;y>0;y--);
- }
- void delay1(void) //定时器延时两分钟
- {
- uchar count=180;
- TMOD=0x01; //定时器0工作方式1
- TR0=1; //启动定时器
- TH0=0;
- do{
- TF0=0;
- TL0=0x0F;
- while(!TF0); //定时是否溢出
- } while((count--) > 0);
- TR0=0;
- TF0=0;
- }
- void dianliang(void)
- {
- Light = 1; //点亮灯泡
- XinHao = 1;
- if(XinHao == 1) //判断是否无信号
- {
- Delay(); //延时防抖动
- XinHao = 1;
- if(XinHao == 1) //再次确定无信号
- {
- delay1(); //利用定时器延时两分钟
- Light = 0; //熄灭灯泡
- }
- }
- }
- void main(void)
- {
- Light = 0; //初始时灯泡熄灭
- while(1)
- {
- XinHao = 1;
- if(XinHao == 0) //检测是否有信号
- {
- Delay(); //延时防信号抖动
- XinHao = 1;
- if(XinHao == 0)
- {
- dianliang(); //有,点亮灯泡
- }
- }
- }
- }
复制代码
作者: dream602 时间: 2019-4-9 16:34
特别感谢
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |