導航:首頁 > 操作系統 > 單片機拆字實驗

單片機拆字實驗

發布時間:2023-01-23 16:32:48

1. 單片機將ROM單元2000H的內容讀出並拆字,高位送片內RAM的50H單元低位送片外RAM的1000H單元寫出完整程序。

這個題目,在這里不知道有多少人來提問了,你們都 是一個學校的嗎?
MOV DPTR , #2000H
MOV A , #0
MOVC A , @A+DPTR
MOV R7 , A
ANL A , #0F0H
SWAP A
MOV 50H , A
MOV A , R7
ANL A , #0FH
MOV DPTR , #1000H
MOVX @DPTR , A

2. 單片機80c51 ORG 0000H MOV 30H,#53H MOV A,30H SWAP A ANL A,#0FH MOV 31H,A MOV A,30H ANL A,#0FH MOV

指令SWAP A執行完畢後,累加器A的值為(35H ),30H單元的值為(53H ),31H單元的值為(未知 ),32H單元的值為(未知 )
並且請簡單描述上列程序的功能:是把立即數,#53H拆開成高四位和低四位,分別放入31H和32H單元中。這通常稱為拆字程序。
應該是問這個程序執行,
累加器A的值為(03H ),30H單元的值為(53H ),31H單元的值為(05H ),32H單元的值為(03H )

3. MCS-51,Keil5,匯編,拆字程序

MOV DPTR,#xxxxh

MOV 41H, DPL

MOV 40H, DPH

4. 單片機基礎實驗3個,用WAVE軟體,滿分懸賞,在線急等

只做一題,其他請學做。

ORG 0000H
CLR A
MOV R0,#30H ;內部RAM首地址
MOV B, #0FFH ; 需要清零的長度
L: MOVX @R0,A
INC R0
DJNZ B,L

5. 單片機拆字拼字實驗,要交作業了,急急急

MOV 31H, 30H
ANL 31H, #0FH
MOV A, 30H
SWAP A
ANL A, #0FH
MOV 32H, A

END

6. 求單片機課程設計實驗 用匯編語言,基於51單片機的定時鬧鍾

MODE_RG EQU40H ;模式選擇

MODE2 EQU 60H ;MODE值

MODE3 EQU61H

MODE4 EQU62H

MODE5 EQU63H

MODE6 EQU64H

MODE1 EQU65H

HOUR EQU41H ;小時緩沖區

MIN EQU42H ;分鍾緩沖區

SEC EQU 43H ;秒緩沖區

TEMP EQU4AH

;*********鬧鍾緩沖區********************

H_ALARM EQU 6AH ;鬧鍾緩沖區

M_ALARM EQU6BH

S_ALARM EQU6CH

F_ALARM EQU6DH

;***********秒錶緩沖區******************

M_SEC EQU76H

S_SEC EQU77H

;*********LED送顯示臨時變數*************

LED0 EQU51H

LED1 EQU52H

LED2EQU53H

LED3 EQU54H

MODE_KEYEQUP3.4

UP_KEY EQUP3.3

DOWN_KEY EQUP3.5

BUF EQU49H

ORG0000H

LJMPMAIN

ORG000BH

LJMPINT_0

ORG001BH

LJMPINT_1

ORG0080H

MAIN: MOVSP,#2FH ;堆棧初始化

MOVMODE_RG,#0 ;MODE_RG寄存器值初始化

MOVLED0,#0FEH ;初始化LED

MOVLED1,#0FDH

MOVLED2,#0FBH

MOVLED3,#0F7H

MOVMODE1,#1

MOVMODE2,#2

MOVMODE3,#3

MOVMODE4,#4

MOVMODE5,#5

MOVMODE6,#6

MOVF_ALARM,#0 ;錯誤2:一開始用CLRF_ALARM,這導致在後面的時候JZF_ALARM運行錯誤,

MOVBUF,#0 ;在於JZ指令是對累加器A全為0或者全為1進行判斷,CLR只能對一位操作

MOVTMOD,#11H ;定時器初始化:定時器0,方式1,定時器1,方式1

MOVIP,#00001000B ;定時器1優先順序高

MOVTH0,#3CH ;定時50MS

MOVTL0,#0B1H

MOVTH1,#0D8H ;定時10MS

MOVTL1,#0F0H

SETBEA

SETBET0

SETBET1

SETBTR0;啟動定時器

MOVHOUR,#0 ;fortest

MOVMIN,#0

MOVSEC,#0 ;定時器計數器,50MS中斷一次,200次則剛好1S

MOVM_SEC,#0

MOVS_SEC,#0

MOVH_ALARM,#0

MOVM_ALARM,#0

MAIN1: LCALLDISPLAY12

LCALLDISPLAY34

;CLRP1.4 TEST

JNBMODE_KEY,KEY_SCAN

MOVA,MODE_RG

CJNEA,MODE6,Y1 ;MODE6秒錶

JNBDOWN_KEY,DEALDOWN ;判斷秒錶開關

JNBUP_KEY,DEALUP

Y1: MOVA,F_ALARM ;判斷鬧鍾

JNZALARM

LJMPMAIN1

;-----------------------------------秒錶開關程序---------------------------

DEALDOWN: LCALLDELY10MS

JBDOWN_KEY,MAIN1

H1: JNBDOWN_KEY,H1

CPLTR1

LJMPMAIN1

DEALUP: LCALLDELY10MS

JBUP_KEY,MAIN1

H2: JNBUP_KEY,H2

MOVM_SEC,#0

MOVS_SEC,#0

CLRTR1

LJMPMAIN1

;-----------------------------------鬧鍾掃描程序---------------------------

ALARM: MOVA,H_ALARM

CPLP1.2

CJNEA,HOUR,EXIT3

MOVA,M_ALARM

CJNEA,MIN,EXIT3

LJMPSTARTALARM

EXIT3: SETBP3.6

LJMPMAIN1

STARTALARM:CPLP3.6

JNBDOWN_KEY,OFFALARM

LJMPS1

OFFALARM: LCALLDELY10MS

JBDOWN_KEY,MAIN1

S2: JNBDOWN_KEY,S2

MOVF_ALARM,#0

SETBP3.6

LJMPMAIN1

S1: LCALLDELAY

LJMPMAIN1

;-----------------------------------鍵盤掃描程序---------------------------

KEY_SCAN: LCALLDELY10MS

JBMODE_KEY,MAIN1

INCMODE_RG

;SETBP1.4 測試

K1: JNBMODE_KEY,K1 ;按鍵直到用戶松開按鍵

K2: MOVA,MODE_RG

CJNEA,#0,DEALMODE;不是在正常顯示模式下則跳轉到模式處理程序

LJMPMAIN1 ;返回主程序

;*******************模式處理程序部分

DEALMODE: MOVTEMP,#0 ;凡轉入MODE處理,則首先清除TEMP

MOVA,MODE_RG ;有MODE_RG值不為5、0

CJNEA,MODE2,M0 ;判斷MODE_RG值,不為1跳轉

LJMPH_GLINT ;模式1,小時位閃爍

M0: CJNEA,MODE3,M1 ;不是模式2,跳轉

LJMPM_GLINT ;模式2,分鍾位閃爍

M1: CJNEA,MODE4,M2 ;不是模式3,跳轉

LJMPH_GLINT

M2: CJNEA,MODE5,M3

LJMPM_GLINT

M3: CJNEA,MODE6,M4

MOVM_SEC,#0

MOVS_SEC,#0

LJMPMAIN1

M4: CJNEA,MODE1,M5

;CLRTR1

LJMPMAIN1

M5: MOVMODE_RG,#0

LJMPMAIN1

;*****************************MODE為1,3,小時位閃爍

//MOVTEMP,HOUR ;將TEMP賦值,防止在加的時候是在隨機值的基礎上增加

H_GLINT: ;CPLP1.0

MOVR0,#28

MOVR1,#28

K4: LCALLDISPLAY12 ;分開顯示

LCALLDISPLAY34

E1: JNBMODE_KEY,K21 ;檢測是否有按鍵按下,有按下則跳轉到分鍾位閃爍

JBUP_KEY,E9 ;判斷加位有無按鍵按下

LJMPUP

E9: DJNZR0,K4

K6: LCALLDISPLAY34

JNBMODE_KEY,K21 ;檢測是否有按鍵按下,有按下則跳轉延時後進行模式判斷

LJMPG1

K21: LCALLDELY10MS ;延時後確定有MODE按鍵按下,將

JBMODE_KEY,H_GLINT

W: JNBMODE_KEY,W

INCMODE_RG

CPLP1.4

LJMPDEALMODE ;確定有按下,MODE+1後返回MODE處理程序

JNBUP_KEY,UP ;判斷加位有無按鍵按下

G1: DJNZR1,K6

LJMPH_GLINT ;調用完畢返回,實現閃爍

K3: LJMPMAIN1 ;可省略

;******************************MODE為2,4,分鍾位閃爍

M_GLINT: MOVR0,#28

MOVR1,#28

K23: CPLP1.7

LCALLDISPLAY12

LCALLDISPLAY34

JNBMODE_KEY,KK ;跳轉,確定是否有按鍵按下

JNBUP_KEY,UP ;判斷加位有無按鍵按下

MOVA,MODE_RG

CJNEA,MODE3,E2 ;在MODE5的情況下要判斷鬧鍾確認鍵有沒按下

LJMPE5

E2: JNBDOWN_KEY,F2

LJMPE5

F2: LJMPONALARM2

E5: DJNZR0,K23

K24: LCALLDISPLAY12

JNBMODE_KEY,KK ;檢測是否有按鍵按下,有按下則跳轉

JNBUP_KEY,UP ;判斷加位有無按鍵按下

MOVA,MODE_RG ;掃描鬧鍾確認鍵

CJNEA,MODE3,E7 ;在MODE5的情況下要判斷鬧鍾確認鍵有沒按下

LJMPG2

E7: JBDOWN_KEY,E8

CPLP1.3

LJMPONALARM2

E8: LJMPG2

KK: LCALLDELY10MS ;去抖

JBMODE_KEY,M_GLINT

W1: JNBMODE_KEY,W1

INCMODE_RG

CPLP1.4

LJMPDEALMODE ;確定有按下,MODE+1後返回MODE處理程序

G2: DJNZR1,K24

LJMPM_GLINT

;*************************位加,處理程序

;***************小時調整

UP: MOVR1,#20

UP11: INCTEMP

UP12: MOVA,MODE_RG ;判斷此時的MODE,根據MODE將臨時變數給對應的賦值

CJNEA,MODE2,AA0 ;不是在MODE2的情況下跳轉

MOVA,TEMP

CJNEA,#24,A_UP1

MOVTEMP,#0

A_UP1: MOVHOUR,TEMP ;為MODE2,將臨時變數賦給小時位

LJMPUP15

AA0: CJNEA,MODE4,UP13//UP13為分鍾調整入口

MOVA,TEMP

CJNEA,#24,A_UP

MOVTEMP,#0

A_UP: MOVH_ALARM,TEMP ;模式3,將臨時變數賦給鬧鍾的小時位

LJMPUP15 ;UP15為顯示入口

;****************分鍾調整入口

UP13: MOVA,MODE_RG

CJNEA,MODE3,UP14 ;不是模式2,跳轉

MOVA,TEMP

CJNEA,#60,DISOVER2

MOVTEMP,#0

DISOVER2: MOVMIN,TEMP

LJMPUP15

UP14: MOVA,TEMP ;上面判斷不是模式2,則必然是模式4

CJNEA,#60,DISOVER3

MOVTEMP,#0

DISOVER3: MOVM_ALARM,TEMP

LJMPUP15

UP15: LCALLDISPLAY12

LCALLDISPLAY34

DJNZR1,UP01

MOVR1,#1 ;

JNBUP_KEY,UP11

UP01: JNBUP_KEY,UP12

UP16: MOVA,MODE_RG ;松開鍵以後按照模式判斷該返回哪種狀態,不能返回DEALMODE函數

CJNEA,MODE2,UP17

LJMPH_GLINT

UP17: CJNEA,MODE3,UP18

MOVSEC,#0 ;每次設置完時間後將秒鍾位置零保證時間准確

LJMPM_GLINT

UP18: CJNEA,MODE4,UP19

LJMPH_GLINT

UP19: CJNEA,MODE5,UP20

LJMPM_GLINT

UP20: LJMPMAIN1

ONALARM2: LCALLDELY10MS ;延時10MS,去抖

JBDOWN_KEY,B2 ;抖動所致,返回分鍾位閃爍

LJMPK42

B2: LJMPM_GLINT

K42: JNBDOWN_KEY,K42

MOVF_ALARM,#0FFH

MOVMODE_RG,#0

LJMPMAIN1

;---------------------------------------中斷程序入口---------------------

;*******************時間中斷0*********************

;錯誤1:中斷程序EXIT處用了MAIN1,導致一直處於中斷狀態

INT_0: PUSHACC

PUSHPSW

MOVTH0,#3CH

MOVTL0,#0B1H

INCBUF

MOVA,BUF

CJNEA,#20,EXIT

TIME: MOVBUF,#0

INCSEC

MOVA,SEC

CJNEA,#60,EXIT

MOVSEC,#00H

INCMIN

MOVA,MIN

CJNEA,#60,EXIT

MOVMIN,#00H

INCHOUR

MOVA,HOUR

CJNEA,#24,EXIT

MOVHOUR,#0

RETI

EXIT: POPPSW

POPACC

RETI

;******************時間中斷1***********************

INT_1: MOVTH1,#0D8H ;定時10MS

MOVTL1,#0F0H

INCS_SEC

MOVA,S_SEC

CJNEA,#100,EXIT4

MOVS_SEC,#0

INCM_SEC

MOVA,M_SEC

CJNEA,#100,EXIT4

MOVM_SEC,#0

EXIT4: RETI

;---------------------------------------顯示-----------------------------

DISPLAY12: MOVA,MODE_RG ;判斷模式,決定是顯示鬧鍾時間還是顯示當前時間

CJNEA,MODE4,DIS0 ;模式四,顯示鬧鍾

LJMPDIS01 ;MODE4

DIS0: CJNEA,MODE5,DIS20

DIS01: MOVR7,H_ALARM ;鬧鍾模式

LJMPDIS2

DIS20: CJNEA,MODE6,DIS21

MOVR7,M_SEC ;秒錶模式,顯示秒錶高位

LJMPDIS2

DIS21: CJNEA,MODE1,DIS1

LJMPDIS22

DIS22: MOVR7,MIN

LJMPDIS2

DIS1: MOVR7,HOUR ;DISPLAY12顯示高位

DIS2: LCALLBCTD ;判斷完畢,調用顯示

;將秒、分分別轉碼,放到R4,R3

MOVA,R4

MOVR3,A

LCALLDIVIDE

MOVDPTR,#NUMTAB

MOVP2,#0FH

MOVP2,LED0

MOVA,45H ;從拆字的出口獲取值

MOVCA,@A+DPTR

MOVP0,A

LCALLDELY10MS

MOVP2,LED1

MOVA,46H

MOVCA,@A+DPTR

MOVP0,A

LCALLDELY10MS

RET

DISPLAY34: MOVA,MODE_RG ;判斷模式,決定是顯示鬧鍾時間還是顯示當前時間

CJNEA,MODE4,DIS31

LJMPDIS32

DIS31: CJNEA,MODE5,DIS35

DIS32: MOVR7,M_ALARM

LJMPDIS34

DIS35: CJNEA,MODE6,DIS41

MOVR7,S_SEC ;秒錶模式,顯示秒錶低位

LJMPDIS34

DIS41: CJNEA,MODE1,DIS33

MOVR7,SEC

LJMPDIS34

DIS33: MOVR7,MIN ;DISPLAY34顯示低位

DIS34: LCALLBCTD

MOVA,R4

MOVR3,A

LCALLDIVIDE

MOVP2,LED2

MOVA,47H

MOVCA,@A+DPTR

MOVP0,A

LCALLDELY10MS

MOVP2,LED3

MOVA,48H

MOVCA,@A+DPTR

MOVP0,A

LCALLDELY10MS

SETBP2.3

RET

;--------------------二翻十:入口:R6R7出口:R2R3R4----------------------

BCTD: MOVR5,#16

CLRA

MOVR2,A

MOVR3,A

MOVR4,A

LOOP: CLRC

MOVA,R7

RLCA

MOVR7,A

MOVA,R6

RLCA

MOVR6,A

MOVA,R4

ADDCA,R4

DAA

MOVR4,A

MOVA,R3

ADDCA,R3

DAA

MOVR3,A

MOVA,R2

ADDCA,R2

DAA

MOVR2,A

DJNZR5,LOOP

RET

;-----------------------拆字:入口:R3R4出口:45H46H47H48H------------------

DIVIDE: MOVA,R3

ANLA,#0FH

MOV46H,A

MOVA,R3

ANLA,#0F0H

SWAPA

MOV45H,A;時拆字45H放時高位,46H放十低位

MOVA,R4

ANLA,#0FH

MOV48H,A

MOVA,R4

ANLA,#0F0H

SWAPA

MOV47H,A;分拆字47H放分高位,48H放分低位

RET

;------------------------------------延時----------------------------------

DELY10MS:MOVR6,#10

D1:MOVR7,#248

DJNZR7,$

DJNZR6,D1

RET

DELAY: MOV74H,#2;延時子程序,12M晶振延時1.002秒

L3: MOV72H,#10

L1: MOV73H,#249

L2: DJNZ73H,L2

LCALLDISPLAY12

LCALLDISPLAY34

JNBDOWN_KEY,OFFALARM1

LJMPS3

OFFALARM1: LCALLDELY10MS

JBDOWN_KEY,S3

S4: JNBDOWN_KEY,S4

MOVF_ALARM,#0

SETBP3.6

LJMPMAIN1

S3: DJNZ72H,L1

DJNZ74H,L3

RET

NUMTAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH;碼表

END

7. 單片機拆字程序 ;

就是把 2000H里的低4位放在高4位與2001H里的低4位拼成一個位元組放到 2002H里
如 (2000H) = 12H (2001H)= 34H
12H&0FH = 02H 02H <> 20H
34H&0FH= 04H 20H|04H=24H
2002H里就放入了 24H

8. 單片機disassembly問題

00401031代表代碼在內存中的地址
0042601c代表字元串string所在的地址

9. 單片機拆字程序詳解,每條代碼的意思

org 00h
Ljmp star ;開始
org 30h
star: mov a,20h ;a=20h,將20值給累加器
swap a ;a中高、低半位元組交換
anl a,#0fh ;屏蔽A.A.4
mov 21h,a ;21h=a
mov a,20h ;a=20h
anl a,#0fh ;屏蔽A.A.4
mov 22h,a ;22h=a
sjmp $ ;跳到當前的地址,進入死循環

end ;結束

10. 什麼是KMC模擬

KMC-S51型單片機模擬實驗裝置

本系統由模擬技術及實驗電路有機結合組成,急支持MCS51單片機的全部原理性實驗和單片機介面電路實驗,又能模擬開發MCS51單片機的應用系統。
一、系統特點:
1、全部實驗內容均為設計性實驗,有利於實現創新教育。
2、提供獨立運行、聯上位機二種工作方式
3、具有示波器測量功能。能實時測量方波、正弦波、鋸齒波、三角波等實驗信號。
4、系統提供能將實驗原理、目的、位置圖等內容於一體自9Windows綜合調試軟體,便於多媒體教學。
5、系統提供機電一體化控制實驗介面, 可做機電一體化實驗。
6、系統提供點陣、液晶、語音錄放、IC(I2C)卡讀寫、遠程多機通信、直流電機轉速測量與控制實驗、新型通信、新型匯流排介面等多種豐富的單片機擴展實驗模塊。系統將地址匯流排、數據匯流排、控制匯流排等全部引出,便於課程設計與畢業設計。

二、技術指標:
1、主機含51CPU。
2、128K EPROM存放系統管理程序。另配有兩片靜態RAM62256構成64K用戶程序RAM。
3、自帶4X8鍵盤,進口鍵座,6隻高亮LED七段數碼顯示器。可單機獨立運行。
4、自帶EPROM編程
5、配10位開關量輸入,12位開關量顯示,
6、帶有±單脈沖發生器, 可調連續脈沖發生器。
7、配有機電控制介面驅動電路及執行單元(直流電機、步進電機、繼電器和電子音響等)。
8、提供標准RS232非同步通信介面。
9、配有各種單片機常用I/O介面晶元(A/D 0809,D/A0832,並行I/OEl8255,並行I/O口81 55, 串並轉換74LSl 64, 單片機並行口輸入/輸出擴展74LS273/774LS244,8253定時/計數器等)。另配通用,C—14插座兩只,通用,C—28插座一隻, 以備擴展實驗用。
10、隨機配套軟體兼容WINDOWS 9X/2000/XP軟體平台,並提供強大的CAI課件,便於進行多媒體教學。
11、聯機軟體支持WINDOWS9X/2000/XP平台。
12、提供功能強大的CAI課件,便於多媒體教學。
13、配有各種新型應用電路。對新型介面和主機集成於一體,如I2C應用電路,128X64點陣LCD顯示應用電路,16X16點陣LED應用電路,語音錄放應用電路,直流電機轉速測量與控制等。RS485通信模塊、I2C匯流排 E平方PROM模塊、看門狗電路控制模塊、DSl8B20溫度測量模塊等新型模塊已集成於主板。

三、實驗內容:
系統中實驗項目的設置完全按照教育部大綱要求,並有適當提高,詳細實驗
項目如下:
帶*為需擴展的選配模塊:
(一)、軟體實驗
I、清零程序實驗 2、拆字程序實驗 3、拼字程序實驗 4、數據塊傳送實驗
5、數據排序實驗 6、字元串查找並統計相同字元串個數 7、雙位元組乘法程序 8、多分支程序設計9、定時/計數器實驗 10、電腦時鍾實驗
(二)、硬體實驗
1、8031單片機P3、PIE口應用
2、工業順序控制
3、並行I/01718255應用
4、簡單I/OE]輸入擴展
5、簡單I/O口輸出擴展
6、A/D轉換0809應用
7、D/A轉換0832應用
8、串並轉換實驗
9、可編程鍵盤顯示8279A應用*
10、列印機介面應用*
11、直流電機控制
12、電子音響
13、定時計數器8353A應用
14、繼電器控制
15、存貯器擴展和程序存貯器擴展
16、8031串列口應用(雙機通信實驗、與PC機通信實驗)
17、16X16點陳LED顯示實驗
18、語音錄放實驗
19、128X64LCD液晶顯示介面實驗
20、IC存儲卡(I2C匯流排)讀寫實驗
21、單片機主從式遠程多機通信實驗
22、直流電機轉速測量與控制實驗
23、RS485通信模塊
24、I2C匯流排E2PROM模塊
25、壓力測量實驗*

閱讀全文

與單片機拆字實驗相關的資料

熱點內容
java多類繼承 瀏覽:157
怎麼用多玩我的世界連接伺服器地址 瀏覽:481
為什麼華為手機比安卓流暢 瀏覽:175
javamap多線程 瀏覽:226
卡西歐app怎麼改時間 瀏覽:841
jquery壓縮圖片 瀏覽:970
用紙筒做解壓東西 瀏覽:236
神奇寶貝伺服器如何tp 瀏覽:242
雲伺服器支持退貨嗎 瀏覽:277
貸款等額本息演算法 瀏覽:188
根伺服器地址配置 瀏覽:499
單片機是軟體還是硬體 瀏覽:624
vivo手機怎麼看編譯編號 瀏覽:320
塑鋼扣條演算法 瀏覽:301
linux應用程序安裝 瀏覽:414
linux怎麼查找命令 瀏覽:431
安卓12原生和非原生是什麼意思 瀏覽:277
四川廣電怎麼安裝app 瀏覽:6
大話西遊伺服器是什麼意思 瀏覽:775
誇克解壓壓縮文件 瀏覽:915