當前位置:編程學習大全網 - 編程語言 - 單片機的程序代碼是什麽?

單片機的程序代碼是什麽?

ORG 0000H

首發:MOV 78H,# 0;初始化:78H放0段代碼,其余放代碼。

MOV 79H,#10

MOV 7AH,#10

MOV 7BH,#10

MOV 7CH,#10

MOV 7DH,#10

MOV R5,# 0;R5是擊鍵次數,初始設置為0。

MOV 30H,# 0;30H是功能鍵存儲單元,設置為0。

MOV 40H,# 0;40H單元最初設置為0。

MOV 41H,# 0;41H單元格最初設置為0。

循環:LCALL DIR

LCALL鍵

INC R5

;分散程序以確定哪個鍵被按下。

S1:CJNE A,#10,S2;不是“+”鍵,跳到S2。

LJMP好玩;是“+”鍵,跳到好玩。

S2:CJNE A,#11,S3;不是“-”鍵,跳到S3。

LJMP好玩;是“-”鍵,跳轉到FUN。

S3:CJNE A,#12,S4;不是“*”鍵,跳到S4。

LJMP好玩;是“*”鍵,跳轉到FUN。

S4:CJNE A,#13,S5;不是“/”鍵,跳到S5。

LJMP好玩;是“/”鍵,跳轉到FUN。

S5:CJNE A,#14,S6;不是“=”鍵,跳到S6。

LJMP好玩;就是“=”鍵,跳起來好玩。

S6:CJNE A,#15,n 1;不是“CL”鍵,跳到N1。

LJMP啟動;是“CL”鍵,跳轉開始。

N1:CJNE R5,#1,N2;判斷按下按鍵的次數

LJMP D11

N2:CJNE R5,#2,N3

LJMP T2

N3:CJNE R5,#3,N4

LJMP T3

N4:CJNE R5,#4,N5

LJMP T4

N5:CJNE R5,#5,N6

LJMP T5

N6:CJNE R5,#6,啟動

LJMP T6

MOV·R4

MOV 78H,A;輸入值被發送到顯示位緩沖器。

MOV 79H,#10

MOV 7AH,#10

MOV 7BH,#10

MOV 7CH,#10

MOV 7DH,#10

LJMP環路

T2:MOV·R7

MOV B,#10

R4 MOV

MUL AB

添加A,R7

MOV·R4

MOV 7AH,#10

MOV 7BH,#10

MOV 7CH,#10

MOV 7DH,#10

MOV 79H,78H壹到十。

MOV 78H,R7;新號碼是壹位數。

LJMP環路

T3:MOV R7,A

MOV B,#10

R4 MOV

MUL AB

添加A,R7

MOV·R4

MOV 7BH,#10

MOV 7CH,#10

MOV 7DH,#10

MOV 7AH,79H十到壹百

MOV 79H,78H壹到十。

MOV 78H,R7;新號碼是壹位數。

LJMP環路

T4:MOV·R7

MOV B,#10

R4 MOV

MUL AB

添加A,R7

MOV·R4

MOV 7CH,#10

MOV 7DH,#10

MOV 7BH,7AH

MOV 7AH,79H

MOV 79H,78H

MOV 78H,R7

LJMP環路

T5:MOV R7,A

MOV B,#10

R4 MOV

MUL AB

添加A,R7

MOV·R4

MOV 7DH,#10

MOV 7CH,7BH

MOV 7BH,7AH

MOV 7AH,79H

MOV 79H,78H

MOV 78H,R7

LJMP環路

T6:MOV R7,A

MOV B,#10

R4 MOV

MUL AB

添加A,R7

MOV·R4

MOV 7DH,7CH

MOV 7CH,7BH

MOV 7BH,7AH

MOV 7AH,79H

MOV 79H,78H

MOV 78H,R7

LJMP環路

MOV 7CH,7BH

MOV 7BH,7AH

MOV 7AH,79H

MOV 79H,78H

MOV 78H,R7

LJMP環路

好玩:MOV 78H,#10

MOV 79H,#10

MOV 7AH,#10

MOV R0,30h;與最後壹個功能鍵交換

MOV 30H,A

MOV A,R0

CJNE A,#10,fun 1;判斷功能鍵

LJMP ADDY"+"

FUN1:CJNE A,#11,FUN2

LJMP SUBT;"-"

FUN2:CJNE A,#12,FUN3

LJMP MULT;"*"

FUN3:CJNE A,#13,FUN4

LJMP DIVI"/"

FUN4:CJNE A,#14,FUN5第壹次按功能鍵,也就是A=#0。

LJMP EQUA"="

FUN5:MOV 40H,R4;保存第壹個號碼

MOV R5,# 0;清除擊鍵次數

LJMP BCD把它分解成bcd碼,以便以後顯示。

的:LJMP開始;溢出處理

艾迪:MOV A,40H第壹個數字被發送到累加器

加壹個,R4;第壹個數字加上第二個數字

JB CY,OF;溢出

MOV 40H,A;保存此結果

MOV R5,# 0;清除擊鍵次數

LJMP BCD

SUBT:MOV A,40H

R4 SUBB

JB CY,OF

MOV 40H,A

MOV R5,#0

LJMP BCD

MULT:MOV A,40H

MOV灣

R4 MOV

MUL AB

JB OV

MOV 40H,A

MOV R5,#0

LJMP BCD

迪維:DIVI阿·R4

MOV灣

MOV A,40H

分部AB

JB OV

MOV 40H,A

MOV R5,#0

LJMP BCD

等式:MOV R5,#0

LJMP BCD

BCD:MOV B,#10

MOV A,40H結果被發送到累加器。

DIV AB結果除以10

MOV 41H,A;暫時存儲“業務”

MOV甲、乙;取壹位數

MOV 78H,A;發送到顯示緩沖區的單元號。

MOV A,41H

JZ回歸;結果是個位數,返回LOOP。

MOV B,#10

MOV A,41H

分部AB

MOV 41H,A

MOV A,B

MOV 79H,A;十位顯示緩沖器

MOV A,41H

JZ回歸;結果是壹個兩位數的數字,這將返回循環。

MOV 7AH,A;百位數傳輸顯示緩存

返回:LJMP循環

;動態顯示子程序

導演:MOV·DPTR,# TAB數碼管解碼表頭地址

MOV R0,# 78H要顯示的緩沖區的位地址

MOV A,# 0FEH單位位選擇信號

MOV R1,A

LD1:MOV A,@R0

MOVC A,@ A+DPTR;查表

MOV P2,r 1;* * *陽極管字位選擇發送到P2端口。

MOV P0,A;字段代碼被發送到P0端口。

LCALL delay 1 ms;延遲調整1ms子程序

INC R0R0指向下壹個模塊。

MOV A,r 1;

JNB ACC.5,LD2判斷是否發出6個數字。

RL A;指向下壹位

MOV R1,A;位選擇信號被存儲回R3。

SJMP LD 1;跳過以顯示下壹個數字。

LD2:RET;發送6個號碼後返回。

TAB:DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,80H,90H,0FFH* * *陽極解碼表

延遲1毫秒:MOV R6,第二

LOOP1:MOV R7,#248

nototherwiseprovided(for)除非另有規定

環路2:DJNZ R7,環路2

DJNZ R6,LOOP1

浸水使柔軟

KEY:LCALL KS;調用檢測鍵子程序

JNZ k 1;按鍵繼續。

LCALL DELAY2無鍵按鍵呼叫延遲去抖

ACALL DIR呼叫動態顯示

AJMP密鑰;返回繼續檢測按鈕

k 1:LCALL delay 2;有壹個按鍵延遲抖動。

LCALL KS然後調用檢測壓筋子程序。

JNZ K2確認有壹個按鈕可以繼續下壹步。

ACALL DIR呼叫動態顯示

AJMP密鑰;按下無鍵返回繼續檢測。

K2:MOV R2,# 0EFH將掃描值發送到R2進行臨時存儲。

MOV R3,# 00H將第壹列值發送到R3進行臨時存儲。

K3:MOV P1,R2;將R2值發送到端口P1。

L0:JB P1.0,l 1;P1.0等於1。跳到L1。

MOV A,# 00H將第壹行值發送到ACC。

AJMP LK跳轉到鍵值處理程序

L1:JB P1.1,L2;P1.1等於1跳轉到L2。

MOV A,# 04H將第二行的行值發送到ACC。

AJMP LK跳轉到鍵值處理程序

L2:JB P1.2,L3;P1.2等於1跳轉到L3。

MOV A,# 08H將第三行值發送到ACC。

AJMP LK跳轉到鍵值處理程序

L3:JB P1.3,下壹個;P1.3等於1跳到下壹頁。

MOV A,# 0CH將第四行值發送到ACC。

LK:加壹個,R3;將行值和列值相加後的鍵值被發送到。

推ACC將中的值發送到堆棧進行臨時存儲。

K4:LCALL delay 2;調用延時去抖程序。

LCALL KS調用鍵檢測程序

JNZ K4;該鍵不被釋放並繼續返回到檢測狀態。

POP ACC將堆棧值發送到ACC

MOV·DPTR,#鍵盤

MOVC A,@A+DPTR

浸水使柔軟

接下來:INC R3列值加1

MOV A,R2;R2值被發送到。

JNB升速7,調;掃描後,轉到鍵進行下壹次掃描。

RL A;掃描尚未完成。將值向左移動壹位以掃描下壹列。

MOV·R2;將ACC值發送到R2進行臨時存儲。

AJMP K3跳到K3繼續。

KS:MOV P1,# 0FH設定P1,高四位0,低四位1。

MOV A,p 1;讀取端口P1。

XRL A,# 0FH將中的值與或中的值區分開來

RET子程序返回

KEYTAB:DB 1,2,3,10,4,5,6,11,7,8,9,12,15,0,14,13;鍵值表

延遲2:MOV R6,# 2H;延遲去抖動子程序

LP1:MOV R7,#0FAH

LP2:DJNZ R7,LP2

DJNZ R6,LP1

浸水使柔軟

結束

  • 上一篇:發電機勵磁調節的原理
  • 下一篇:內蒙古師範大學二本專業有哪些
  • copyright 2024編程學習大全網