標題: 求大神幫下忙,下面的如何改為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://m.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |