當前位置:編程學習大全網 - 編程語言 - 來個紅外線遙控的編碼程序吧!用匯編的!

來個紅外線遙控的編碼程序吧!用匯編的!

紅外遙控電子密碼鎖程序

ORG 0000H ;主程序

CLR P1.7 ;清零

MOV RO, #OOH

CLR P1.3 ;關報警

CLR P1.7 ;P1.7清零

CLR P1.4 ;關報警

MOV RO, #OOH ;串行口初始化

MOV 52H, #02H ;將立即數02H送52H

MOV TMOD , #20H ;設置T1工作方式2

MOV TL1 ,#OF4H ;定時初始值送TL1

MOV TH1 ,#OF4H ;定時初始值送TH1

SETB TR1 ;啟動定時器T1

MOV SCON, #ODOH ;定義串行行工作方式3

MOV PCON , #OOH

KEY: JNB P1.5 , KEP1 ;選擇密碼57618

LJMP KEP2

*******************************************************密碼57618程序

KEP1: MOV P2 ,#0FFH ;關顯示

MOV A , P0 判斷是否有鍵按下

CPL A ;對P0口的數據取反

ANL A , #OFFH ;立即數OFF 與PO的數據相與

JNZ JP ;有鍵按下轉至JP

MOV A , P1 ;判斷是否有鍵盤按下

CPL A ;將P1口的數據取反

ANL A ,#O7H ;累加器數據為零轉遙控接收程序

JZ WAIT

ACALL D10MS ;調用10秒延時

MOV A , P1

CPL A

ANL A ,#O7H

JZ WAIT

PP1: CJNE A , #01H ,JP1

MOV P2 , #89H ;顯示字符”H”

LJMP K0P1

PP2: CJNE A , #02H ,JP2

MOV P2 , #89H ;顯示字符”H”

LJMP KOP1

JP2: CJNE A , #04H ,KY

MOV P2 ,#89H ;顯示字符”H”

JP3: MOV A , #O7H

CJNE A , #07H ,JP3

LJMP LP1

KOP1: MOV A ,P1

ANL A, #07H

CJNE A , #07H ,KOP1

LJMP KEP1

JP: LCALL D10MS

MOV A , PO

CPL A,

ANL A, #OFFH

JZ C6

CJZE A ,#01H ,KEY02

MOV P2, #89H

LJMP KEY1

KEY02: CJNE A ,#02H ,KEY03

MOV P2 ,#89H

LJMP KJP1

KEYO3: CJNE A , #04H, KEY04

MOV P2 ,#89

LJMP KJP1

KEY04: CJZE A , #08H, KEY05

MOV P2 ,#89H

LJMP KJP1

KEY05: CJZE A , #10H, KEY06

MOV P2 ,#89H

LJMP KJP1

KEY06: CJZE A , #08H, KEY07

MOV P2 ,#89H

LJMP KJP1

KEY07 CJZE A , #10H KEY08

MOV P2 ,#89H

LJMP KJP1

KEY08 CJZE A , #10H, C6

MOV P2 ,#89H

LJMP KJP1

KJP1: MOV A, P0

CJNE A , #OFFH ,KJP1

C6: LJMP WAIT

********************************************************************

KEY1: LCALL MP

CJNE A , #02H , KEY03

MOV P2 , #89H

KEY2 LCALL MP

CJNE A , #04 , KEY02

MOV P2 , #89H

KEY3 LCALL MP

CJNE A , #08 , KEY02

MOV P2 , #89H

KEY4 LCALL MP

CJNE A , #10H, KEY02

MOV P2 , #89H

KEY5 MOV A ,P0

CJNE A , #0FFH, KEY5

MOV P2 , #OFFH

MOV R5 ,#30H

KEY6: MOV A , PO

CPL A

ANL A , #OFFH

JNZ BB2

MOV A ,P1

CPL A

ANL A , #O7H

JZ BB1

LCALL D10MS

MOV A , P1

CPL A

ANL A ,#07H

JZ

CJNE A ,#04H ,B1

MOV P2 , #89H

LJMP LP2

B1: CJNE A, #01H ,BL1

MOV P2 ,#89H

LJMP KOP1

BL1: CJNE A , #02H ,BB1

MOV P2 , #89H

LJMP KOP1

BB2: LCALL D10MS

MOV A , P0

CPL A

ANL A , #OFFH

JZ BB1

LJMP KEY02

BB1: MOV R7 ,#OC8H

BB4: MOV R6 ,#OF9H

NOP

NOP

BB5: JNZ R6 ,BB5

DJNZ R7, BB4

DJNZ R5 , KEY6

LJMP WAIT

************************************************************密碼81675程序

KEP2: MOV P2 ,#OFFH ;關顯示

MOV A ,PO

] CPL A

ANL A , #OFFH

JNZ HP

MOV A ,P1

CPL A

ANL A , #07H

JZ C9

LCALL D1OMS

MOV A ,P1

CPL A

ANL A ,#07H

JZ C9

BB: CJNE A , #O1H ,HP1

MOV P2 ,#89H

LJMP K1P1

HP1: CJNE A ,#02H ,HP2

MOV P2 ,#89H

LJMP K1P1

HP2: CJNE A ,#04H ,C9

MOV P2, #89H

HP3: MOV A ,P1

ANL A ,#07H

CJNE A ,#07H ,HP3

MOV P2 ,#OFFH

LJMP LP1

K1P1 : MOV A ,P1

ANL A ,#O7H

CJNE A ,#07H ,K1P1

C9: LJMP WAIT

HP: LCALL D1OMS

MOV A , PO

CPL A

ANL A ,#OFFH

JZ C9

CJNE A , #1OH,K0Y02

MOV P2 ,#89H

LJMP K0Y1

K0Y02: CJNE A ,#01H ,K0Y03

MOV P2 ,#89H

LJMP KUP1

K0Y03 CJNE A ,#02H ,K0Y04

MOV P2 ,#89H

LJMP KUP1

K0Y04 CJNE A ,#04H ,K0Y05

MOV P2 ,#89H

LJMP KUP1

K0Y05 CJNE A ,#08H ,K0Y06

MOV P2 ,#89H

LJMP KUP1

K0Y06 CJNE A ,#20,K0Y07

MOV P2 ,#89H

LJMP KUP1

K0Y07 CJNE A ,#40,K0Y08

MOV P2 ,#89H

LJMP KUP1

K0Y08 CJNE A ,#80,U2

MOV P2 ,#89H

LJMP KUP1

KUP1: MOV A ,PO

CJNE A ,#OFFH ,KUP1

U2: LJMP WAIT

K0Y1: LCALL MP

CJNE A #08H ,K0Y02

MOV P2 ,#89H

K0Y2 LCALL MP

CJNE A #04 ,K0Y02

MOV P2 ,#89H

K0Y3 LCALL MP

CJNE A #02 ,K0Y02

MOV P2 ,#89H

K0Y4 LCALL MP

CJNE A #01H ,K0Y02

MOV P2 ,#89H

K0Y6: MOV A ,PO

CPL A

ANL A ,#OFFH

JNZ PP2

MOV A , P1

CPL A

ANL A ,#07H

JZ PPL

LCALL D10MS

MOV A , P1

CPL A

ANL A ,#07H

JZ PP1

CJNE A ,#04H ,Y1

MOV P2 , 389H

LJMP LP2

Y1: CJNE A ,#01H ,Y11

MOV P2 ,#89H

LJMP K1P1

Y11: CJNE A , #02H ,PP1

MOV P2 ,#89H

LJMP K1P1

PP2: LCALL D10MS

MOV A, PO

CPL A

ANL A ,#OFFH

JZ PP1

LJMP K0Y02

PP1: MOV R7 ,#OC8H

PP4: MOV R6 , #OF9H

NOP

NOP

PP5: DJNZ R6 ,PP5

DJNZ R7 ,PP4

DJNZ R5 ,K0Y6

LJMP WAIT

*****************************************************報警程序

LP1: SETB P1.4

INC RO

P019: MOV R3 ,#05H

P020: MOV R7 ,#0A0H

P018: SETB P1.3

LCALL P01A

CLR P1.3

LCALL P01A

DJNZ R7 ,P018

DJNZ R3 ,P020

CLR P1.3

CJNE R0 , #03H ,P017

LJMP P019

P017: CLR P1.4

LJMP WAIT

****************************************************開鎖程序

LP2: SETB P1.7

LCALL T5S

CLR P1.7

MOV R0 ,#00H

LJMP WAIT

******************************************************判斷鍵是否釋放

MP: MOV A ,PO

CJNE A ,#OFFH ,MP

MOV P2 ,#OFFH

PM: MOV R5 ,#30H

LCALL TP

RET

******************************************************判斷是否有鍵按下

TP: MOV A ,PO

CPL A

ANL A , #OFFH

JNZ AP

MOV A ,P1

CPL A

ANL A, #O7H

JZ TP3

LCALL D10MS

MOV A , P1

CPL A

ANL A , #07H

JZ TP3

LCALL D10MS

MOV A ,P1

CPL A

ANL A ,#07H

JZ TP3K

CJNE A, #04H ,C1

MOV P2 ,#89H

C3: MOV A P1

ANL A , #07H

CJNE A #07H ,C3

MOV P2 ,#0FFH

LJMP LP1

C1: CJNE A ,#01H ,C2

MOV P2 ,#OCOH

LJMP KCP1

C2: CJNE A ,#02 ,U11

MOV P2 ,#90HP

LJMP KCP1

KCP1: MOV A , P1

ANL A ,#07H

CJNE A ,#07H ,KCP1

U11: LJMP WAIT

AP: LCALL D10MS

MOV A ,P0

CPL A

ANL A , #0FFH

JZ TP3

RET

************************************************************400M延時程序

TP3: MOV R7 ,#OC8H

TP1: MOV R6 , #OF9H

NOP

NOP

TP2: DJNZ R6 , TP2

DJNZ R7 ,TP1

DJNZ R5 ,TP ;10S

LJMP WAIT

*********************************************************10延時程序]

D10MS : MOV R7 ,#05H

LOOP1: MOV R6 ,#OF9H

NOP

NOP

LOOP2: DJNZ R6 , LOOP2

DJNZ R7 ,LOOP1

RET

*****************************************************延時程序

P01A: MOV R2 ,#06H

LCALL DELY

RET

DELY: PUSH 02H

DEL2 : PUSH 02H

DEL3 : PUSH 02H

DEL4: DJNZ R2, ,DEL4

POP O2H

DJNZ R2 ,DEL3

POP O2H

DJNZ R2 ,DEL2

POP O2H

DJNZ R2 ,DELY

RET

******************************************************5S 延時程序

T5S: MOV R4 ,#15H

TS1: MOV R3 ,#64H

TS2: MOV R2 ,#05H

TS3: MOV R1 , #OF9H

NOP

NOP

T5S4 DJNZ R1 ,TS4

DJNZ R2 ,TS3

DJNZ R3 ,TS2

DJNZ R4 ,TS1

RET

3、遙控發送程序

ORG 0000H

LOOPO: MOV SCON ,#0C0H ;設定串行口工作方式3

MOV TMOD , #20H ;T1工作方式2

MOV PCON , #00H ;波特率設置

MOV TL1 , #OF4H ;定時初始值F4送TL1

MOV TH1 , #OF4H ;定時初始值F4送TH1

*******************************************************************

CP: JB P1.0 ,CPK ;判斷遙控按鍵P1.0是否按下

LCALL PP ;調用延時

JB P1.0 , CP

STEB TR1 ;啟動定時器T1

MOV 50H ,#5FH ; 將立即數5FH 送50H 存儲單元

MOV RO ,#50H ;將立即數50H 送RO寄存器

MOV R1 , #05H ;將立即數05H送R1寄存器

IND: MOV A ,@R0 ; 將50H中的5F送累加器A

MOV C , P

MOV TB8 ,C

MOV SBUF ,A ;將要發送數據5F送串行數據緩沖器

AAA : JNB P1.1 ,ON1 ; P1.1是”0”電平時轉至調制程序

BBB” JB P1.1 ,CCC ;P1.1是”1”電平等待

AMP AAA

CCC : JBC TI ,CP ;判斷發送中斷標誌位]

SETB P1.2 ;P1.2置1

AJMP BBB

ON1: ACALL ON

AJMP AAA

PP: MOV R6, #05H ;延時子程序

100P3: MOV R5 , #OF9H

NOP

NOP

100P4: DJNZ R5 ,100P4

DJNZ R6 ,100P3

RET

ON: CP1 P1.2 ;0電平調制程序

。。。。。。。。。。。。。。(***有82個CP1 P1.2)

RET

********************************************************************

4、遙控接收程序

WAIT: JBC R1 ,LOOP5 ;遙控接收程序

LJMP KEY

LOOP5: MOV R0 ,#51H ;將立即數51H送R0

MOV R7 ,#03H ;將立即數03H送R7

LOOP6: MOV A ,SBUF ;將串行緩沖器接收到的數據累加器A

JNB PSW.0 LOOP7 ;標誌位F0清零了嗎?

JNB RB8 ,LOOP8 ;數據接收完了嗎?

LOOP9 MOV @RO ,A ;開鎖處理程序

MOV R1 , 51H

CJNE R1 ,#1EH ,LP

DJNZ 52H , KP

CLR P1.7

MOV 52H ,# 02H

MOV R0 ,#OOH

LJMP WAIT

KP: SETB P1.7

MOV R0 ,#00H

LJMP WAIT

LP: DJNZ R7 ,WAIT

CLR PSW.5

LJMP WAIT

LOOP7: JB RB8 , LOOP8

LJMP LOOP9

LOOP8: SETB PSW.5 ;給標誌位F0置1

LJMP WAIT ;繼續接收數據

參考下!

  • 上一篇:國債期貨:如何分析國債期貨走勢?
  • 下一篇:程序員!
  • copyright 2024編程學習大全網