版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
;文件名:PortforMCU51
;功能:I/O口輸入、輸出實(shí)驗(yàn)
;接線:用導(dǎo)線連接八位邏輯電平輸出模塊的K0到CPU模塊的RXD(P3.0口):
;用8位數(shù)據(jù)線連接八位邏輯電平顯示模塊的JD2B到CPU模塊的JD8(P1口)。
?〃***************************************?**************************
DIRBITP3.0
ORG0000H
LJMPSTART
ORG0100H
START:
OutputI:
mova,#0fEH
movr5.#8
loopl:
CLRC
movC,DIR
JCOutput2
movPI,a
rla
AcallDelay
djnzr5,loopl
SjmpOutputI
Outpul2:
mova,#07fH
movr5,#8
loop2:
CLRC
movC,DIR
JNCOutput1
movPl,a
rra
AcallDelay
djnzr5,loop2
SjmpOutput2
Delay:
movr6,#0
DelayLoopl:
movr7,#0
DelayLoop2:
NOP
NOP
djnzr7,DelayLoop2
djnzr6,DelayLoop1
end
;〃***?**************************************************************
;文件名:In_OutforMCU51
;功能:擴(kuò)展輸入、輸出實(shí)驗(yàn)
;接線:用8位數(shù)據(jù)線連接八位邏輯電平輸出模塊的JD1E到擴(kuò)展輸入模塊的JD2C;
;八位邏輯電平顯示模塊的JD2B到擴(kuò)展輸B出模塊的JDIC;
;用導(dǎo)線連接擴(kuò)展輸入模塊的CS_244到CPU模塊的8000H;
;擴(kuò)展輸出模塊的CS.273接到8I00H。
.〃***?***********************************?**************************
ADDRJnEQU8000H
ADDR_outEQU8100H
ORG0000H
LJMPSTART
ORG0I00H
START:
movDPTR,#ADDR_in;并行輸入口地址
movxa,@DPTR;輸入數(shù)據(jù),讀開關(guān)狀態(tài)
Output:
movDPTR,#ADDR_ou(;并行輸出口地址
movx@DPTR,a;輸出數(shù)據(jù)
ACALLDelay
SjmpSTART
Delay:
mov電#10
DelayLoop1:
movr7.#0
DelayLoop2:
NOP
NOP
djnzr7,DelayLoop2
djnzr6,DelayLoop1
ret
END
.〃**********************************************
;文件名:SRAMforMCU51
;功能:擴(kuò)展存儲(chǔ)器讀寫實(shí)驗(yàn)
;接線:用導(dǎo)線連接SRAM模塊的CS.RAM到地:
;P1.0接到八位邏輯電平顯示模塊的LOo
.〃***?***********************************?******
ADDREQUOOOOH
ORGOOOOH
UMPSTART
ORGOIOOH
START:
MOVSH#60H
MOVDPTR,#ADDR;置外部RAM讀寫地址
MOVA,#55H;測(cè)試的數(shù)據(jù)一
MOVB.A
MOVX@DPTR,A;寫外部RAM
MOVXA,@DPTR;讀外部RAM
XRLA,B;比較讀叵的數(shù)據(jù)
JNZERROR
MOVA,#0AAH;測(cè)試的數(shù)據(jù)二
MOVB,A
MOVX@DPTR,A
MOVXA,@DPTR
XRLA.B
JZPASS;測(cè)試通過
ERROR:SETBPI.0;測(cè)試失敗,點(diǎn)亮LED
SJMP$
PASS:CPLP1.0:LED狀態(tài)(亮/滅)轉(zhuǎn)換
MOVR1,#OOH;延時(shí)
DELAY:MOVR2,#OOH
DJNZR2,$
DJNZRI,DELAY
UMPSTART;循環(huán)測(cè)試
END
J/*************************************************
儀件名:FlashforMCU5I
;功能:FlashMcmory讀寫實(shí)驗(yàn)
;接線:用導(dǎo)線連接閃存模塊的CS_FLASH到地;
;八位邏輯電平顯示模塊的JD4B接到CPU模塊的JD8。
J/***?*************木********木********京***********點(diǎn)*
ADDREQUOOOOH;字節(jié)寫入位置
DATAIEQU055H;測(cè)試數(shù)據(jù)1
DATA2EQUOAAH;測(cè)試數(shù)據(jù)2
ORGOOOOH
UMPSTART
ORGOIOOH
START:
MOVSP,#60H
LCALLCHIP.RESET;芯片復(fù)位
LCALLCHIP_ERASE;芯片擦除
LCALLDELAY
MOVDPTR,#5555H;字節(jié)寫入操作數(shù)據(jù)1
MOVA,#OAAH
MOVX@DPTR,A;5555H/AAH
MOVDPTR,#2AAAH
MOVA,#55H
MOVX@DPTR,A;2AAAH/55H
MOVDPTR,#5555H
MOVA,#0A0H
MOVX@DPTR,A;5555H/A0H
MOVDPTR,#ADDR
MOVA,#DATA1;向設(shè)定的位置寫入DATA1
MOVX@DPTR,A
LCALLDELAY
MOVDPTR,#ADDR
MOVXA,@DPTR;讀數(shù)據(jù)1
MOVPl,A
NOP;在此設(shè)斷點(diǎn),觀察PI口數(shù)據(jù)
MOVDPTR,#5555H;字節(jié)寫入操作數(shù)據(jù)2
MOVA,#OAAH
MOVX@DPTR,A;5555H/AAH
MOVDPTR,#2AAAH
MOVA,#55H
MOVX@DPTR,A;2AAAH/55H
MOVDPTR,#5555H
MOVA,#0A0H
MOVX@DPTR,A;5555H/A0H
MOVDPTR,#ADDR+1
MOVA,#DATA2;向設(shè)定的位置寫入DATA2
MOVX(a)DPTR,A
LCALLDELAY
MOVDPTR.#ADDR+1
MOVXA,@DPTR;讀數(shù)據(jù)2
MOVPl,A
NOP;在此設(shè)斷點(diǎn),觀察Pl口數(shù)據(jù)
SJMP$;結(jié)束
,**拿**拿*****率**拿**拿**率*****拿**拿**********************
CHIP_RESET:;芯片復(fù)位
MOVDPTR,#5555H
MOVA,#OAAH
MOVX@DPTR,A;55J5H/AAH
MOVDPTR,#2AAAH
MOVA,#55H
MOVX@DPTR,A;2AAAH/55H
MOVDPTR,#5555H
MOVA,#0F0H
MOVX@DPTR,A;5555H/F0H
RET
*****************************************************
CHIP_ERASE:;片擦除
PUSHDPH
PUSHDPL
PUSHACC
CE_START:
MOVDPTR,#5555H
MOVA,#OAAH
MOVX@DPTR,A;5555H/AAH
MOVDPTR,#2AAAH
MOVA,#55H
MOVX@DPTR,A;2AAAH/55H
MOVDPTR.#5555H
MOVA,#80H
MOVX@DPTR,A;5555H/8OH
MOVDPTR,#5555H
MOVA,#0AAH
MOVX@DPTR.A;5555H/AAH
MOVDPTR,#2AAAH
MOVA.#55H
MOVX@DPTR,A;2AAAH/55H
MOVDPTR,#5555H
MOVA,#10H
MOVX@DPTR,A;5555H/10H
NOP
CE_WMT:
MOVXA,@DPTR
JBACC.7,CE_OK
JNBACC.5,CE_WAIT;等待擦除完成
MOVXA,@DPTR
JBACC.7,CE_OK
MOVA,#0F0H;擦除不成功,復(fù)位
MOVX@DPTR,A
SJMPCE_START;重試
CE_OK:
NOP
POPACC
POPDPL
POPDPH
RET
Delay:
movr6,#2O
DelayLoopI:
movr7,#0
DelayLoop2:
NOP
djnzr7,DelayLoop2
djnzr6,DelayLoop1
ret
END
.〃***?*********************************************
;文件名:TimerforMCU51
;功能:定時(shí)/計(jì)數(shù)器實(shí)驗(yàn)
;接線:導(dǎo)線連接CPU模塊P10到八位邏輯電平顯示模塊的L0.
?〃***?*************今**今**左***************?*本*****4:*
Tickequ10000;lOOOOxIOOus=Is
TIOOusequ156;lOOus時(shí)間常數(shù)(6M)
ClOOusequ30h;lOOus記數(shù)單元
LEDBufbit20h
org0
IjmpStart
orgOOObh
TOInt:
pushPSW
mova,CI00us+l
jnzGoon
decClOOus
Goon:
decClOOus+1
mova,ClOOus
orla,C100us+l
jnzExit;lOOus記數(shù)器不為0,返回
movClOOus,#27H:#high(Tick;
movCI00us+l,#10H;#low(Tick)
epiLEDBuf;lOOus記數(shù)器為0,重置記數(shù)器
;取反LED
Exit:
popPSW
reti
Start:
movTMOD,#02h;方式2,定時(shí)器
movTHO,#tlOOus
movTLO.#tlOOus
movIE,#IOOOOOIOb;EA=LITO=1
setbTRO;開始定時(shí)
clrLEDBuf
clrP1.0
movClOOus.#27H;#high(Tick)
movC100us+l,#10H;#low(Tick)
Loop:
movc,LEDBuf
movP1.0,c
IjmpLoop
end
?〃**專,*余**拿**余**拿**余**余**余**余**余**拿**余*****今**拿**拿**今**拿**京
;文件名:8253forMCU51
;功能:8253定時(shí)/計(jì)數(shù)器實(shí)驗(yàn)
;接線:用導(dǎo)線連接CPU模塊的8000到8253模決的CS_8253;
;頻率發(fā)生器模塊的153.6kHz接8253模塊的CLK0:
;8253模塊的CLK1接OUTO,CLK2接OUT1,GATE。、GATEkGATE2接+5V,
;OUT2接L0燈。
?〃***》*******************拿**拿**專**塞******》*******今**才**今*********
TIM_CTLEQU8OO3H;8253狀態(tài)/命令口地址
TIMEROEQU8000H
TIMERIEQU8001H
TIMER2EQU8002H
MODE03EQU001I0110B
MODE12EQU01110I00B
MODE22EQU10I10100B
ORGOOOOH
LJMPSTART
ORG0030H
START:
MOVDPTR,#TIM_CTL;定時(shí)器0工作在方式3
MOVA,#MODE03
MOVX(g)DPTR,A
MOVDPTR,#TIMERO
MOVA,#00H
MOVX@DPTR,A
MOVA.#01H
MOVX@DPTR,A;計(jì)數(shù)初值為0100H,100分頻
MOVDPTR,#TIM_CTL;定時(shí)器1工作在方式2
MOVA,#MODE12
MOVX@DPTR,A
MOVDPTR,#TIMERI
MOVA,#I8H
MOVX@DPTR.A
MOVA,#00H
MOVX@DPTR,A;計(jì)數(shù)初值為0018H,24分頻
MOVDPTR,#TIM_CTL;定時(shí)器2工作在方式2
MOVA.#MODE22
MOVX@DPTR,A
MOVDPTR,#TIMER2
MOVA,#0AH
MOVX@DPTR,A
MOVA,#00H
MOVX@DPTR.A;計(jì)數(shù)初值為OOOAH,10分頻
SJMP$
END
'/***?*a**4cHe**********事*****************京?*********
;文件名:EXimlorMCU51
;功能:外部中斷實(shí)驗(yàn)
;接線:導(dǎo)線連接單次脈沖模塊的輸出端到CPU噗塊的P32,
;CPU模塊的P10接八位邏輯電平顯示模塊的L0燈。
,/***?***********************************?*********
LEDBITP1.0
LEDBufBIT20H
org0
IjmpStart
org3
InterruplO:
pushPSW;保護(hù)現(xiàn)場(chǎng)
epiLEDBuf;取反LED
movc,LEDBuf
movLED,c
popPSW;恢復(fù)現(xiàn)場(chǎng)
reti
Start:
clrLEDBuf
clrLED
movTCON,#01h;外部中斷0下降沿觸發(fā)
movIE,#8lh;打開外部中斷允許位(EXO)及總中斷允許位(EA)
OK:IjmpOK
end
J/***?**Hc*4c*****************************東?*暮**********************
;〃*文件名:I64I65串轉(zhuǎn)并,并轉(zhuǎn)串實(shí)驗(yàn)程序
;功能:把開關(guān)量通過74**165串行輸入到內(nèi)存,并通過74**164串行輸出到數(shù)
;碼管上顯示。
;接線:P1.0接QHI65,PL1接CLK165,P1.2接SH_LD,
;Pl.3、PI.4接靜態(tài)數(shù)碼顯示的DIN、CLKo
//***?***********************************?************************
QH165BITPI.0
CLK165BITPl.l
SHLDBITPl.2
DATI64BITPl.3
CLK164BITPl.4
MEMORYEQU30H
ORG0000H
AJMPSTART
ORGOOBOH
START:setbCLK165
clrSH_LD
sctbSH_LD
movr7,#8
Input:rra
movc,QH165
movACC.7,c
clrCLK165
nop
setbCLK165
djnzr7,Input
movMEMORY,A
movA,MEMORY
movr6,#8
Output:
rrcA
movDAT164,C
clrCLK164
setbCLK164
djnzr6.Output
acallDELAY
sjmpSTART
DELAY:
movRO,#5
DD2:movR1.#OFFH
djnzRLS
djnzR0,DD2
RET
END
;文件名:4LEDforMCU51
;功能:串行靜態(tài)顯示
;接線:用導(dǎo)線對(duì)應(yīng)連接靜態(tài)數(shù)碼管顯示模塊的DIN、CLK到CPU模塊的PIO、P1I
?〃***?***********************************?***************
DBUFEQU30H
TEMPEQU40H
DINBITP1.0
CLKBITPl.l
ORGOOOOH
LJMPSTART
ORG0080H
START:
MOVDBUF+3,#8
MOVDBUF+2,#0
MOVDBUF+L#5
MOVDBUF,#I
;顯示“8051”
DISP:MOVRO,#DBUF
MOVRI,#TEMP
MOVR2,#4
DP10:MOVDPTR.#SEGTAB
MOVA,@R0
MOVCA,@A+DPTR
MOV@R1,A
INCRO
INCRI
DJNZR2,DPIO
MOVRO.#TEMP
MOVRI,#4
DPI2:MOVR2,#8
MOVA,@R0
DP13:RLCA
MOVDIN,C
CLRCLK
SETBCLK
DJNZR2,DPI3
INCRO
DJNZRi,DPI2
OK:SJMPOK
SEGTAB:DB3FH,06H,5BH.4FH.66H.6DII
DB7DH,07H,7FH,6FH,77H,7CH
DB39H,5EH.7BH,71H.00H.40H
END
?〃********************************今**4:***?***************
;文件名:825510forMCU5I
;功能:8255輸入輸出實(shí)驗(yàn)
;接線:用8位數(shù)據(jù)線連接八位邏輯電平輸出模塊的JD1E到8255模塊的JD3C(PA1-1);
;八位邏輯電平顯示模塊的JD4B到8255模塊的JD4c(PB口)或JD5C(PC口);
;用導(dǎo)線連接8255模塊的CS.8255到地。
?〃**門***********************************?***************
D8255AEQU8000H;8255PA口地址
D8255BEQU800IH;8255PB口地址
D8255CEQU8002H;8255PC口地址
D8255EQU8003H;8255狀態(tài)/命令口地址
ORGOOOOH
UMPSTART
ORG0I00H
START:
MOVDPTR.#D8255
MOVA.#82H;置8255狀態(tài)
;方式0,PA,PC口輸出,PB口輸入
MOVA,#90H;置8255狀態(tài)
;方式0,PBPC口輸出,PA口輸入
MOVX@DPTR,A
LOOP
MOVDPTR,#D8255A
MOVXA,@DPTR;讀開關(guān)狀態(tài)
MOVDPTR,#D8255B
MOVX@DPTR,A;點(diǎn)亮對(duì)應(yīng)的LED
MOVDPTR,#D8255C
MOVX@DPTR,A;點(diǎn)亮對(duì)應(yīng)的LED
SJMPLOOP
END
;文件名:8255KDforMCU51
;功能:8255控制犍盤顯示實(shí)驗(yàn)
;接線:連接8279鍵盤顯示模塊的JD3E到8255模塊的JD3C(PA口);
;JD2E至IJ8255模塊的JD4C(PB口);
;JD4E到8255模塊的JD5C(PCU);
;用導(dǎo)線連接8255模塊的CS.8255到地。
?〃********今*****************************今**塞**今************
D8255AEQU8000H;8255PA口地址
D8255BEQU800IH;8255PB口地址
D8255CEQU8002H;8255PC口地址
D8255EQU8003H;8255狀態(tài)/命令口地址
LEDBUFEQU50H;顯示緩存
KEYVALEQU60H;讀到的鍵碼
ORG0000H
LJMPSTART
ORG0I00H
START:MOVSP,#80H
MOVDPTR,#D8255
MOVA.#90H;方式O,PB,PC口輸出,PA口輸入
MOVX@DPTR,A
MOVLEDBUF,#IOH
MOVLEDBUF+I,#11H
MOVLEDBUF+2,#1IH
MOVLEDBUF+3,#11H
MOVLEDBUF+4,#5
MOVLEDBUF+5.#5
MOVLEDBUF+6,#2
MOVLEDBUF+7,#8
KB_DIS:
LCALLRD_KB;讀鍵盤
MOVA,#0FFH
CJNEA,KEYVAL,TOSHOW;判讀到鍵
SJMPSHOW;沒有則繼續(xù)讀鍵
TOSHOW:
MOVLEDBUEKEYVAL
SHOW:LCALLDISPLAY
SJMPKB_DIS
RD_KB:;鍵盤掃描
MOVA.#02H汨描第?行
MOVDPTR,#D8255C
MOVX@DPTR,A
MOVDPTR,#D8255A
MOVXA.@DPTR
MOVR1,#OOH
CJNEA.#OFFH,KEYCAL;判鍵是否按下
MOVA,#01H;掃描第二行
MOVDPTR,#D8255c
MOVX@DPTR,A
MOVDPTR,#D8255A
MOVXA.@DPTR
MOVRI,#08H
CJNEA.#OFFH,KEYCAL
SJMPNOKEY;無鍵按下
KEYCAL:MOVRO,#08H;計(jì)算梃碼
SHIFT:RRCA
JNCTORET
INCRI
DJNZRO.SHIFT
SJMPNOKEY;無鍵按下
TORET:MOVKEYVAL.Rl
RET
NOKEY:MOVKEYVAL,#OFFH;返回?zé)o鍵標(biāo)志
RET
Display:
MOVR7,#8;8個(gè)數(shù)碼管
MOVR5,#0
MOVR0.#LEDBUF
DLOOP:
MOVA,R5
RLA
RLA
RLA
ANLA,#I1111O11B
INCR5
MOVDPTR,#D8255C
MOVX@DPTR,A;點(diǎn)亮對(duì)應(yīng)的LED
MOVA,@R0
MOVDPTR,#LEDSEG
MOVCA,@A+DPTR
INCRO
MOVDPTR,#D8255B
MOVX@DPTR,A;顯示數(shù)據(jù)
LCALLDelay
DJNZR7.DLOOP
RET
Delay:PUSHR7
MOVR7,#200
DelayLoop:
NOP
DJNZR7.DelayLoop
POPR7
RET
LEDSEG:DB3FH,06H,5BH.4FH.66H.6DH;0,1,2,3,4,5
DB7DH,07H,7FH,6FH,77H,7CH;6,7,8,9,A,B
DB39H,5EH,79H,71H,(X)H,40H;C.D,E.E
END
;文件名:8279forMCU51
;功能:8279控制鍵盤與顯示
;接線:無須接線
?〃********今******************************才***************
Z8279EQU08701H;8279狀態(tài)/命令匚地址
D8279EQU08700H;8279數(shù)據(jù)口地址
LEDMODEQU10H;右端輸入八位字符顯示;外部譯碼鍵掃描方式,雙鍵互鎖
LEDFEQEQU38H;掃描速率
LEDCLSEQU0DIH滴除
LEDWROEQU80H;設(shè)定的將要寫入的顯示RAM地址
ORGOOOOH
AJMPSTART
ORG0040H
START:
MOVSR#60H
LCALLIN1T8279;初始化8279
WAIT:MOVDPTR,#Z8279
MOVXA,@DPTR
ANLA,#0FH
JZWAIT
MOVA,#40H
MOVX@DPTR,A
MOVDPTR,#D8279
MOVXA.@DPTR
ANLA,#3FH
MOVR4.#OOH
MOVR5,A
LCALLDISLED
SJMPWAIT
INIT8279:;8279初始化子程序
PUSHDPH;保存現(xiàn)場(chǎng)
PUSHDPL
PUSHACC
LCALLDELAY;延時(shí)
MOVDPTR,#Z8279
MOVA,#LEDMOD;置8279工作方式
MOVX@DPTR,A
MOVA,#LEDFEQ;置鍵盤掃描速率
MOVX@DPTR,A
MOVA,#LEDCLS;清除LED顯示
MOVX@DPTR,A
LCALLDELAY;延時(shí)
MOVDPTR,#Z8279
MOVA,#90H
MOVX@DPTR,A
MOVDPTR,#D8279
MOVA,#40H
MOVX@DPTR.A
MOVA,#40H
MOVX@DPTR,A
MOVA,#OH
MOVX@DPTR,A
MOVA,#OH
MOVX@DPTR,A
MOVA.#OEFH
MOVX@DPTR,A
MOVA.#27H
MOVX@DPTR,A
MOVA,#5BH
MOVX@DPTR,A
MOVA,#7FH
MOVX@DPTR.A
POPACC;恢復(fù)現(xiàn)場(chǎng)
POPDPL
POPDPH
RET
;顯示字符子程序
瀚入:R4,位置R5,值
DISLED:PUSHDPH;保存現(xiàn)場(chǎng)
PUSHDPL
PUSHACC
MOVA,#LEDWR0;置顯示起始地址
ADDA.R4;加位置偏移量
MOVDPTR,#Z8279
MOVX@DPTR,A;設(shè)定顯示位置
MOVDPTR.#LEDSEG;置顯示常數(shù)表起始位置
MOVA,R5
MOVCA,@A+DPTR渣表
MOVDPTR,#D8279
MOVX@DPTR,A;顯示數(shù)據(jù)
POPACC;恢復(fù)現(xiàn)場(chǎng)
POPDPL
POPDPH
RET
DELAY:;延時(shí)子程序
PUSH0;保存現(xiàn)場(chǎng)
PUSH1
MOV0,#0H
DELAY1:MOV1,#OH
DJNZ1,$
DJNZ0,DELAY1
POP1;恢復(fù)現(xiàn)場(chǎng)
POP0
RET
LEDSEG:DB3FH.06H,5BH.4FH.66H.6DH.7DH.07H:Q1,2,345,6,7
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H;'8,9,A,B,C,D,E,F'
DB6DH,02H,08H,00H,59H,0FH.76H;'U、,'
END
;//***?****?**京*****************************尊*************
;文件名:MusicforMCU5I
;功能:音頻驅(qū)動(dòng)實(shí)驗(yàn)一一生日快樂歌!
;接線:C3模塊的JT3C短路帽接至右端、JT2c短路帽接至1、2端;
;8255模塊的CS_8255接CPU模塊的8000H;
;用導(dǎo)線連接語音接口模塊的VOICE到8255模塊的PCOo
?〃**拿》*專*****余**************今**今*************************
D8255AEQU8000H;8255PA口地址
D8255BEQU8001H;8255PB口地址
D8255CEQU8002H;8255PC口地址
D8255EQU8003H;8255狀態(tài)/命令口地址
R8EQU60H
ORG0000H
LJMPSTART
ORGOBH;TIMER0中斷起始地址
JMPTIMO;跳至TIMERO中斷子程序
ORG0100H
START:
MOVTMOD.#00(XX)001B;設(shè)TIMERO在MODE1
MOVIE,#1000001OB;中斷使能
MOVR8,#0
MOVDPTR,#D8255
MOVA,#80H;置8255狀態(tài),PC口輸出
MOVX@DPTR,A
STARTO:MOV30H,#00;取筒譜碼指針
NEXT:MOVA,30H;簡(jiǎn)譜碼指針我入A
MOVDPTR,#TABLESTABLE取簡(jiǎn)譜碼
MOVCA,@A+DPTR
MOVR2,A;取到的簡(jiǎn)譜碼暫存于R2
JZENDO;是否取到00(結(jié)束碼)?
ANLA,#0FH;不是,則取低4位(節(jié)拍碼)
MOVR5.A;將節(jié)拍碼存入R5
MOVA,R2;將取到的簡(jiǎn)譜碼再載入A
SWAPA;高低4位交換
ANLA,#0FH;取低4位(音符碼)
JNZSING;取到的音符碼是否為0?
CLRTRO;是:則不發(fā)音
JMPDI;跳至DI
SING:DECA;取到的音符碼減1(不含0)
MOV22H.A;存入(22H)
RLA;乘2
MOVDPTR,#TABLE1取相對(duì)的高位字節(jié)計(jì)數(shù)值
MOVCA.@A+DPTR
MOVTH0,A;取到的高位字節(jié)存入TH0
MOV21H.A;取到的高位字節(jié)存入(21H)
MOVA,22H;再載入取到的音符碼
RLA諫2
INCA;加1
MOVCA,@A+DPTR取相對(duì)的低位字節(jié)計(jì)數(shù)值
MOVTLO,A;取到的低位字節(jié)存入TL0
MOV20H.A;取到的低位字節(jié)存入(20H)
SETBTRO;啟動(dòng)TIMER0
DI:CALLDELAY;基本單位時(shí)間1/4拍187亳秒
INC30H;取簡(jiǎn)譜碼指針加1
JMPNEXT;取下一個(gè)碼
ENDO:CLRTRO;停止TIMER0
JMPSTARTO;重且循環(huán)
TIMO:PUSHACC;將A的值暫存于堆棧
PUSHPSW;將PSW的值暫存于堆棧
MOVTL0.20H;重設(shè)計(jì)數(shù)值
MOVTH0.21H
CPLPI.0;將P10位反相
MOVA.R8
CPLA
MOVR8.A
MOVDPTR.#D8255C
MOVX@DPTR,A
POPPSW;至堆棧取回PSW的值
POPACC;至堆棧取回A的值
RETI;返回主程序
DELAY:MOVR6,#02;18,邕秒
D2:MOVR4,#120
D3:MOVR3,#248
DJNZR3,$
DJNZR4.D3
DJNZR6,D2
DJNZR5.DELAY;決定節(jié)拍
RET
TABLEI:
DW64260,64400.64524.64580
DW64684,64777,64820,64898
DW64968,65030,65058,65110
DW65157,65178,65217
TABLE:
DB82H,01H,81H,94H,84H
DB0B4H.0A4H.04H
DB82H,01H,81H,94H,84H
DB0C4H.0B4H,O4H
;2
DB82H,01H,81H,0F4H,0D4H
DB0B4H.0A4H,94H
DB0E2H,01H,0E1H,0D4H,0B4H
DB0C4H.0B4H.04H
;3
DB82H.01H.81H.94H.84H
DB0B4H,0A4H,04H
DB82H,01H,81H,94H,84H
DB0C4H.0B4H.04H
./I
DB82H.01H.81H.0F4H.0D4H
DB0B4H,0A4H,94H
DB0E2H.01H.0E1H,0D4H.0B4H
DB0C4H,0B4H,O4H
DB00
END
w***?***********************************?***************
;文件名:LEDDZforMCU51
;功能:LED點(diǎn)陣顯示實(shí)驗(yàn)
;接線:B2模塊的JT1B短路帽接至右端:
;用導(dǎo)線對(duì)應(yīng)連接雙色點(diǎn)陣顯示模塊的DN、SCLK、RCLK到
;CPU模塊的PIO、PU、P12o
;文字滾動(dòng)向左
DinBITPI.0
CLKBITPl.l
R_CLKBITPl.2
ORGOOOOH
JMPMAIN
ORGOOOBH
UMPINTS_TO;定時(shí)中斷
ORG01OOH
MAIN:
CLREA
MOVR2,#0
MOVRI,#32;32個(gè)字符
MOVR0,#40H
MOVDPTR,#TAB
MOVEDATA:;把全部字符豆制到40H
MOVA,R2
MOVCA,@A+DPTR
MOV@R0,A
INCR2
INCRO
DJNZRi,MOVEDATA
MOVTMOD,#01H;定時(shí)器0工作方式為1
MOVTLO,#OAFH;置計(jì)數(shù)初值
MOVTH0.#080H;OFFFFH-3CAFH=50000,50mS
MOVR7,#5;軟件計(jì)數(shù)器.循環(huán)5次
SETBETO;允許TO中斷
CLRETI;禁止T1中斷
SETBEA
SETBTRO
CLRR.CLK
MOVSR#60H
MOVR3.#O8OH涕一行
AO:MOVR2,#08H
MOVR0.#40H
LOOP
;MOVDPTR.#TAB;字符首地址
MOVRI,#4
MOVA.R3
RRA;行碼右移一位轉(zhuǎn)下一行
MOVR3,A
LCALL,OUTDATA
Al:MOVA,@R0
LCALL,OUTDATA
INCRO
DJNZRI,Al
SETBR_CLK;顯示一行
CLRR_CLK
DJNZR2.LOOP;下一行
LJMPAO
LJMPMAIN
OUTDATA:
MOVR6.#8
OUTI:RRCA
MOVDIN.C
CLRCLK
SETBCLK
NOP
NOP
DJNZR6,OUT1
RET
INTS_TO:
CLREA
PUSH0E0H
PUSH00H
PUSH01H
PUSH02H
DJNZR7.BACK;軟件計(jì)數(shù),次數(shù)不到返回
MOVR7,#5
MOVR0,#40H
MOVRI,#8
SHIFTI:
MOVR2.#4
CLRC
PUSHOOH
MOVA,RO
ADDA.#3
MOVRO,A
MOVA.@R0
POPOOH
RLCA
SHIFT2:
MOVA,@R0
RLCA
MOV@R0,A
INCRO
DJNZR2.SHIFT2
DJNZRl.SHIFTI
BACK:
POP02H
POPOIH
POPOOH
POPOEOH
MOVTMOD,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 聊城職業(yè)技術(shù)學(xué)院《機(jī)械制造概論》2023-2024學(xué)年第一學(xué)期期末試卷
- 麗江文化旅游學(xué)院《防火防爆技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 江西衛(wèi)生職業(yè)學(xué)院《測(cè)量?jī)x表與自動(dòng)化》2023-2024學(xué)年第一學(xué)期期末試卷
- 江南大學(xué)《移動(dòng)開發(fā)技術(shù)及應(yīng)用》2023-2024學(xué)年第一學(xué)期期末試卷
- 華北理工大學(xué)輕工學(xué)院《物流運(yùn)作規(guī)劃》2023-2024學(xué)年第一學(xué)期期末試卷
- 自貢職業(yè)技術(shù)學(xué)院《藝術(shù)名著導(dǎo)讀》2023-2024學(xué)年第一學(xué)期期末試卷
- 周口文理職業(yè)學(xué)院《虛擬儀器技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 重慶科技職業(yè)學(xué)院《信息技術(shù)與課件制作》2023-2024學(xué)年第一學(xué)期期末試卷
- 浙江水利水電學(xué)院《民用航空法》2023-2024學(xué)年第一學(xué)期期末試卷
- 鄭州西亞斯學(xué)院《太極拳理論基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 小學(xué)三年級(jí)數(shù)學(xué)下冊(cè)計(jì)算題大全(每日一練共25份)
- Unit 3 同步練習(xí)人教版2024七年級(jí)英語上冊(cè)
- “十四五”期間推進(jìn)智慧水利建設(shè)實(shí)施方案
- EPC項(xiàng)目機(jī)電安裝專業(yè)工程重難點(diǎn)分析及經(jīng)驗(yàn)交流
- 大型活動(dòng)聯(lián)合承辦協(xié)議
- 工程項(xiàng)目采購與供應(yīng)鏈管理研究
- 2024年吉林高考語文試題及答案 (2) - 副本
- 拆除電纜線施工方案
- 搭竹架合同范本
- Neo4j介紹及實(shí)現(xiàn)原理
- 焊接材料-DIN-8555-標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論