




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、單片機原理及其嵌入式運用單片機原理及其嵌入式運用實實 驗驗 根本實驗 綜合實例根本實驗根本實驗 程序框架程序框架 開關量輸入輸出開關量輸入輸出(IO)實驗實驗 串行通訊及串行通訊及AD轉換實驗轉換實驗 鍵盤編程實驗鍵盤編程實驗 液晶顯示實驗液晶顯示實驗 數碼管顯示實驗數碼管顯示實驗 FLASH編程實驗編程實驗 定時器溢出中斷實驗定時器溢出中斷實驗 定時器輸入中斷捕捉定時器輸入中斷捕捉實驗實驗程序框架程序框架 實驗目的實驗目的 實驗器材實驗器材 硬件接線硬件接線 軟件功能軟件功能 程序清單程序清單 備注闡明備注闡明實驗目的實驗目的:了解程序根本框架了解程序根本框架實驗器材實驗器材: :1.SD-
2、1型在線編程實驗儀型在線編程實驗儀2.導線假設干導線假設干硬件接線硬件接線:VCCPTC3PTA7PTA6PTA5PTA4PTA3PTA2PTA1PTA0PTC0PTC1PTC2MOTOROLA GP32 MCU PTC4PTB7PTB6PTB5PTB4PTB3PTB2PTB1PTB0軟件功能軟件功能: PTAPTA口的模擬量輸出,控制指示燈口的模擬量輸出,控制指示燈 程序執行指示燈閃爍程序執行指示燈閃爍程序清單:程序清單: 文件闡明文件闡明 口地址定義口地址定義 數據區定義數據區定義 主程序主程序 系統初始化及中斷矢量系統初始化及中斷矢量 延時子程序延時子程序* *-文件闡明文件闡明-* *
3、文件名文件名:PrgFrame.ASM :PrgFrame.ASM * *硬件銜接硬件銜接:PTA.1:PTA.1接指示燈接指示燈 * *程序描畫程序描畫: :指示燈指示燈PTA.1PTA.1閃爍閃爍 * *目的目的: :第一個第一個Motorola MCUMotorola MCU程序框架程序框架 * *闡明闡明: :提供提供Motorola MCUMotorola MCU的編程框架,供教學入門運用的編程框架,供教學入門運用 * *-* *-口地址定義口地址定義-PTA EQU $0000 ;APTA EQU $0000 ;A口數據存放器口數據存放器DDRA EQU $0004 ;ADDRA
4、EQU $0004 ;A口數據方向存放器口數據方向存放器RAMstartAddr equ $0040 ;RAMRAMstartAddr equ $0040 ;RAM的起始地址因芯片不同可以更改的起始地址因芯片不同可以更改FlashStartAddr equ $8000 ;FlashStartAddr equ $8000 ;程序開場地址因芯片不同可以更改程序開場地址因芯片不同可以更改* *數據區定義變量名定義數據區定義變量名定義 org RAMstartAddr ;RAM org RAMstartAddr ;RAM的起始地址的起始地址N1 rmb 1 ;N1 rmb 1 ;變量變量N1,N1,緩
5、沖運用緩沖運用* *主程序主程序 org FlashStartAddr ; org FlashStartAddr ;程序起始地址程序起始地址MainInit: ;MainInit: ;復位后程序從此開場執行復位后程序從此開場執行 ; ;系統初始化系統初始化 SEI ; SEI ;制止一切中斷制止一切中斷 LDHX #$023F ; LDHX #$023F ;堆棧初始化,放入堆棧初始化,放入GP32GP32的的RAMRAM最高端最高端 TXS TXS JSR Init0 ; JSR Init0 ;調系統初始化子程序調系統初始化子程序Init0Init0,初始學習時跳過此處,初始學習時跳過此處 ;
6、I/O ;I/O初始化初始化 BSET 1,DDRA ; BSET 1,DDRA ;設置設置PTA.1PTA.1為輸出為輸出 BSET 1,PTA ; BSET 1,PTA ;初始時,初始時,PTA.1PTA.1指示燈指示燈 暗暗 MainLoop: ;MainLoop: ;程序總循環入口程序總循環入口 BCLR 1,PTA ;PTA.1 BCLR 1,PTA ;PTA.1指示燈指示燈“亮亮 MOV #$2,N1 ; MOV #$2,N1 ;延時子程序延時子程序DelaySubDelaySub的時間長度入口的時間長度入口 JSR DelaySub ; JSR DelaySub ;調用延時子程序
7、調用延時子程序 BSET 1,PTA ; BSET 1,PTA ;初始時,初始時,PTA.1PTA.1指示燈指示燈 暗暗 MOV #$4,N1 ; MOV #$4,N1 ;延時子程序延時子程序DelaySubDelaySub的時間長度入口的時間長度入口 JSR DelaySub ; JSR DelaySub ;調用延時子程序調用延時子程序 ;- ;- JMP MainLoop ; JMP MainLoop ;轉總循環入口處轉總循環入口處Init0: ;Init0: ;系統初始化系統初始化Init0Init0子程序子程序 LDA #%00000001 ; LDA #%00000001 ;初始化初
8、始化CONFIG2CONFIG2 STA $001E STA $001E LDA #%00111101 ; LDA #%00111101 ;初始化初始化CONFIG1CONFIG1 STA $001F STA $001F CLR $0036 ; CLR $0036 ;初始化初始化PTCLPTCL MOV #$01,$0036 MOV #$01,$0036 MOV #$01,$0038 MOV #$01,$0038 MOV #$2C,$0039 MOV #$2C,$0039 MOV #$80,$003A MOV #$80,$003A BSET 5,$0036 BSET 5,$0036 BSET
9、7,$0037 BSET 7,$0037 BSET 4,$0036 BSET 4,$0036 RTS RTS* *-中斷矢量中斷矢量- - ORG $FFFE ; ORG $FFFE ;復位矢量復位矢量 DW MainInit DW MainInit延時子程序DelaySub: ;延時0.1秒 PSHH ;保據存放器HX PSHX DelaySub1: LDHX #$FFFF DelaySub2: PSHA ;維護存放器A LDA #$FFDelaySub3: DBNZA DelaySub3 PULA DBNZX DelaySub2 DBNZA DelaySub1 PULX PULH RTS開
10、關量輸入輸出開關量輸入輸出(IO)實驗實驗 實驗目的實驗目的 實驗器材實驗器材 硬件接線硬件接線 程序功能程序功能 程序清單程序清單 備注闡明備注闡明A.3-0A.7-4-A.3-0 COMA COMA STA PTA STA PTA LDA PTB ; LDA PTB ;取開關取開關PTB0PTB0形狀形狀,0-,0-閉合閉合 AND #%00000001 ; AND #%00000001 ;剩下剩下PTB0PTB0位位 STA TmpVar ; STA TmpVar ;放入變量放入變量TmpVarTmpVar NOP NOP LDA PTC ; LDA PTC ;取開關取開關PTC0PTC
11、0形狀形狀,0-,0-閉合閉合 AND #%00000001 ; AND #%00000001 ;剩下剩下PTC0PTC0位位 NOP NOP ADD TmpVar ; ADD TmpVar ;經過此運算經過此運算 假設假設A=0,A=0,兩個均閉合兩個均閉合 ; ;假設假設=1,=1,有一個閉合有一個閉合;=2,;=2,均未閉合均未閉合 CBEQA #$0,Light0 ; CBEQA #$0,Light0 ;比較比較, ,相等轉移相等轉移,A=0,A=0轉向轉向Light0Light0 NOP NOP CBEQA #$1,Light1 ;A=1 CBEQA #$1,Light1 ;A=1轉
12、轉Light1Light1 NOP ;A=2, NOP ;A=2,兩排均不亮兩排均不亮 LDA #$FF ; LDA #$FF ;兩排燈均不亮兩排燈均不亮 1- 1-不亮不亮 STA PTB STA PTB STA PTC STA PTC BRA IO_End ; BRA IO_End ;轉轉IO_END,IO_END,延時延時Light0:Light0: LDA #$00 ; LDA #$00 ;兩排燈均亮兩排燈均亮 0- 0-亮亮 STA PTB STA PTB STA PTC STA PTC BRA IO_End ; BRA IO_End ;無條件轉無條件轉IO_ENDIO_ENDLig
13、ht1:Light1: LDA Light_BC ; LDA Light_BC ;兩排燈之一亮兩排燈之一亮 0- 0-亮亮 STA PTB ; STA PTB ;驅動驅動B B口燈口燈 NEGA ; NEGA ;求補命令求補命令 STA PTC ; STA PTC ;驅動驅動B B口燈口燈 STA Light_BC ; STA Light_BC ;保管形狀保管形狀IO_End:IO_End: LDA #$FE ; LDA #$FE ;延時延時Delay1:Delay1: LDX #$FC LDX #$FCDelay2:Delay2: NOP NOP NOP NOP NOP NOP DBNZX
14、Delay2 DBNZX Delay2 DBNZA Delay1 DBNZA Delay1 BRA Start ; BRA Start ;無條件轉開場處無條件轉開場處* *-* *-子程序子程序-* *Init0: ;Init0: ;系統初始化系統初始化Init0Init0子程序子程序 LDA #%00000001 ; LDA #%00000001 ;初始化初始化CONFIG2CONFIG2 STA $001E STA $001E LDA #%00111101 ; LDA #%00111101 ;初始化初始化CONFIG1CONFIG1 STA $001F STA $001F CLR $003
15、6 ; CLR $0036 ;初始化初始化PTCLPTCL MOV #$01,$0036 MOV #$01,$0036 MOV #$01,$0038 MOV #$01,$0038 MOV #$2C,$0039 MOV #$2C,$0039 MOV #$80,$003A MOV #$80,$003A BSET 5,$0036 BSET 5,$0036 BSET 7,$0037 BSET 7,$0037 BSET 4,$0036 BSET 4,$0036 RTS RTS* *-復位矢量復位矢量- - ORG $FFFE ; ORG $FFFE ;復位矢量復位矢量 DW MainInit DW Ma
16、inInit備注闡明: 僅作為根本教學例程僅作為根本教學例程串行通訊及串行通訊及ADAD轉換實驗轉換實驗 實驗目的實驗目的 實驗器材實驗器材 硬件接線硬件接線 VB界面界面 軟件功能軟件功能 程序清單程序清單 備注闡明備注闡明實驗目的實驗目的:A/DA/D轉換,轉換,單片機異步串行通訊單片機異步串行通訊 實驗器材實驗器材: :1.SD-1型在線編程實驗儀型在線編程實驗儀2.導線假設干導線假設干硬件接線硬件接線:VCCPTC3PTA7PTA6PTA5PTA4PTA3PTA2PTA1PTA0PTC0PTC1PTC2MOTOROLA GP32 MCU PTC4PTB7PTB6PTB5PTB4PTB3
17、PTB2PTB1PTB0VCCVB界面:界面:軟件功能軟件功能: 由由PORTBPORTB口的模擬量輸入,經過單片機的口的模擬量輸入,經過單片機的A/DA/D轉換器采集轉換器采集8 8路數據,并放在路數據,并放在ADBUFADBUF開開場的地址中。場的地址中。 再在再在INBUFINBUF中放開關量。中放開關量。 發發8686給給PCPC機作為握手信號,進展通訊測機作為握手信號,進展通訊測試,試,PCPC機判別后確認,發機判別后確認,發8686作為確認信作為確認信號,單片機收到號,單片機收到8686后,把模擬量后,把模擬量0-70-7和開和開關量送關量送PCPC機顯示。機顯示。程序清單:程序清
18、單: 文件闡明文件闡明 口地址定義口地址定義 SCI存放器存放器 A/D存放器存放器 數據區定義數據區定義 主程序主程序 A/D轉換轉換 串行通訊輸出串行通訊輸出 串行通訊輸入串行通訊輸入 從從PC機接納數據,機接納數據,并存儲后送并存儲后送PTA輸輸出出 把在把在INBUF和和ADBUFF的數據送的數據送PC機輸出機輸出 中斷矢量中斷矢量* *-文件闡明文件闡明-* * *文件名:文件名:sci.assci.as* *硬件銜接:硬件銜接:PORTAPORTA口輸出它的口輸出它的PTA7-0PTA7-0接接OUTOUT的的7-07-0號號* *指示燈指示燈A0A0作為運轉指示不受其它數據控制作
19、為運轉指示不受其它數據控制PORTBPORTB作為作為ADAD輸入銜接,輸入銜接,* *PORTBPORTB口為模擬量輸入口口為模擬量輸入口,PORTC,PORTC的的C0-4C0-4接接ININ的的5 5個撥位開關個撥位開關0-40-4作為開關作為開關* *輸入串行口與微機串行口相接輸入串行口與微機串行口相接96009600,N N,8 8,1 1* *程序描畫:程序描畫:1.1.由由PORTBPORTB口的模擬量輸入,經過單片機的口的模擬量輸入,經過單片機的A/DA/D轉換器采集轉換器采集8 8* *路數據,并放在路數據,并放在ADBUFADBUF開場的地址中開場的地址中* * 2. 2.
20、再在再在INBUFINBUF中放開關量中放開關量* * 3. 3.發發8686給給PCPC機作為握手信號,進展通訊測試機作為握手信號,進展通訊測試,PC,PC機判別后確機判別后確* * 認認, ,發發8686作為確認信號,單片機收到作為確認信號,單片機收到8686后后, ,把模擬量把模擬量 0-7 0-7和和* * 開關量送開關量送PCPC機顯示機顯示* *目的:目的:A/DA/D轉換,單片機異步串行通訊轉換,單片機異步串行通訊 * *-* * *-口地址定義口地址定義-PTA EQU $0000 ;APTA EQU $0000 ;A口數據存放器口數據存放器PTB EQU $0001 ;BPT
21、B EQU $0001 ;B口數據存放器口數據存放器PTC EQU $0002 ;CPTC EQU $0002 ;C口數據存放器口數據存放器PTD EQU $0003 ;DPTD EQU $0003 ;D口數據存放器口數據存放器DDRA EQU $0004 ;ADDRA EQU $0004 ;A口數據方向存放器口數據方向存放器DDRB EQU $0005 ;BDDRB EQU $0005 ;B口數據方向存放器口數據方向存放器DDRC EQU $0006 ;CDDRC EQU $0006 ;C口數據方向存放器口數據方向存放器DDRD EQU $0007 ;DDDRD EQU $0007 ;D口數
22、據方向存放器口數據方向存放器DDRE EQU $0008 ;EDDRE EQU $0008 ;E口數據存放器口數據存放器* *-SCI-SCI存放器存放器-SCS1 EQU $0016 ;SCISCS1 EQU $0016 ;SCI形狀存放器形狀存放器1 1B-SCTE EQU 7 ;B-SCTE EQU 7 ;發送緩沖區空標志位發送緩沖區空標志位B-TC EQU 6 ;B-TC EQU 6 ;發送完成標志位發送完成標志位B-SCRF EQU 5 ;B-SCRF EQU 5 ;接納器滿標志位接納器滿標志位SCDR EQU $0018 ;SCISCDR EQU $0018 ;SCI數據存放器數據
23、存放器* *-A/D-A/D存放器存放器-ADSCR EQU $003C ;A/DADSCR EQU $003C ;A/D轉換形狀和控制存放器轉換形狀和控制存放器B-COCO EQU 7 ;B-COCO EQU 7 ;轉換完成標志位轉換完成標志位ADR EQU $003D ;A/DADR EQU $003D ;A/D轉換數據存放器轉換數據存放器ADCLK EQU $003E ;A/DADCLK EQU $003E ;A/D轉換輸入時鐘存放器轉換輸入時鐘存放器RAMstartAddr equ $0040 ;RAMRAMstartAddr equ $0040 ;RAM的起始地址因芯片不同可以更的起
24、始地址因芯片不同可以更改改FlashStartAddr equ $8000 ;FlashStartAddr equ $8000 ;程序開場地址因芯片不同可以更程序開場地址因芯片不同可以更改改* *-數據區定義變量定義數據區定義變量定義- - ORG RAMstartAddr ;RAM ORG RAMstartAddr ;RAM的起始地址的起始地址INBUF RMB 1 ;1INBUF RMB 1 ;1字節存放字節存放5 5位開關量位開關量ADBUF RMB 8 ;8ADBUF RMB 8 ;8字節存放字節存放8 8路路A/DA/D轉換轉換結果結果ONOFF RMB 1 ;1ONOFF RMB
25、1 ;1字節存放從字節存放從PCPC的數據的數據 TMPVAR RMB 1 ;TMPVAR RMB 1 ;暫存運用暫存運用* *-主程序主程序- - ORG FlashStartAddr ; ORG FlashStartAddr ;程序起始地址程序起始地址MainInit:MainInit: NOP NOP LDA #$3E ;A/D LDA #$3E ;A/D初始化初始化2 2分頻、運用內部總線時分頻、運用內部總線時鐘鐘 STA ADCLK STA ADCLK LDA #$FF ; LDA #$FF ;定義定義PORTAPORTA輸出輸出 STA DDRA STA DDRA LDA #$00
26、 LDA #$00 STA PTA STA PTA STA ONOFF ;ONOFF=0 STA ONOFF ;ONOFF=0 LDA #$00 ; LDA #$00 ;定義定義PORTBPORTB,PORTCPORTC作為輸入作為輸入 STA DDRB STA DDRB STA DDRC STA DDRC* *-A/D-A/D轉換轉換-Main: Main: NOP ; NOP ;循環獲得循環獲得8 8路路ADAD值值 LDHX #$0 ;H LDHX #$0 ;H:X=0X=0GA-REPEAT:GA-REPEAT: TXA ;X TXA ;X存放器送到累加器存放器送到累加器 STA AD
27、SCR ; STA ADSCR ;選定一路選定一路A/DA/D,啟動轉換,啟動轉換 BRCLR 7,ADSCR, BRCLR 7,ADSCR,* * ; ;等待等待A/DA/D轉換完成轉換完成 LDA ADR ;A/D LDA ADR ;A/D轉換結果給轉換結果給A A STA ADBUF,X ;A STA ADBUF,X ;A給給ADBUF+XADBUF+X,儲存數據,儲存數據 AIX #1 ; AIX #1 ;下一存儲單元下一存儲單元 CPX #$08 ; CPX #$08 ;判別判別8 8路轉換能否完成路轉換能否完成 BNE GA-REPEAT ; BNE GA-REPEAT ;循環循環
28、8 8次轉換次轉換8 8個通道模擬個通道模擬量量* *-串行通訊輸出串行通訊輸出-GET-IN:GET-IN: LDA PTC ;5 LDA PTC ;5位開關量采集位開關量采集 STA INBUF ; STA INBUF ;暫放暫放INBUFINBUF NOP NOP LDA #$56 ; LDA #$56 ;把把86861616進制數進制數5656為握為握 ; ;手信號送出到手信號送出到PCPC中中 BRCLR 7,SCS1, BRCLR 7,SCS1,* * ; ;等待以前數據全部發出,等待以前數據全部發出, ;SCTE ;SCTE置置1 1,發送緩沖區空,發送緩沖區空 STA SCDR
29、 ; STA SCDR ;發送緩沖區空時,發送緩沖區空時, ; ;可向可向SCISCI數據存放器送數數據存放器送數 * *-串行通訊輸入串行通訊輸入- NOP NOP LDHX #0 LDHX #0WS-REPE1:WS-REPE1: BRSET 5,SCS1,WS-RECE1 ; BRSET 5,SCS1,WS-RECE1 ;測試測試SCRFSCRF位,位, ; ;判別接納緩沖器能否滿判別接納緩沖器能否滿 NOP NOP NOP NOP AIX #1 ; AIX #1 ;延時等待延時等待 CPHX #$FFFF CPHX #$FFFF BNE WS-REPE1 BNE WS-REPE1 BR
30、A DISP1 ; BRA DISP1 ;超時退出超時退出WS-RECE1:WS-RECE1: LDA SCDR ; LDA SCDR ;讀取收到的數據讀取收到的數據 CMP #$56 ; CMP #$56 ;判別能否為確認信號判別能否為確認信號86 86 BNE DISP1 ; BNE DISP1 ;不是退出,是就開場通不是退出,是就開場通訊訊 NOP NOP LDHX #0 LDHX #0WS-REPE2:WS-REPE2: BRSET 5,SCS1,WS-RECE2 ; BRSET 5,SCS1,WS-RECE2 ;測試測試SCRFSCRF位,位, ; ;判別接納緩沖器能否滿判別接納緩沖
31、器能否滿 NOP NOP NOP NOP AIX #1 ; AIX #1 ;延時等待延時等待 CPHX #$6688 CPHX #$6688 BNE WS-REPE2 ; BNE WS-REPE2 ;超時退出超時退出 BRA DISP1 BRA DISP1* *-從從PCPC機接納數據,并儲存后送機接納數據,并儲存后送PTAPTA輸出輸出-* *-A.0A.0不受影響不受影響-WS-RECE2WS-RECE2 LDA SCDR LDA SCDR NOP NOP AND #$FE ;A0=0 AND #$FE ;A0=0 STA TMPVAR ; STA TMPVAR ;暫時緩存暫時緩存 LDA
32、 ONOFF LDA ONOFF AND #$1 ; AND #$1 ;留下留下A.0A.0 ORA TMPVAR ; ORA TMPVAR ;處置接納的數據,放在處置接納的數據,放在A A中中 STA ONOFF ; STA ONOFF ;儲存接納數據在儲存接納數據在ONOFFONOFF中中 NOP ; NOP ;送送A/DA/D值值* *-把在把在INBUFINBUF和和ADBUFFADBUFF的數據送的數據送PCPC機輸出機輸出- LDHX #$0 LDHX #$0SA-REPEAT:SA-REPEAT: LDA INBUF,X LDA INBUF,X BRCLR 7,SCS1, BRC
33、LR 7,SCS1,* * ;SCTE ;SCTE置置1 1, ; ;發送緩沖區空發送緩沖區空 STA SCDR ;A STA SCDR ;A給給SCDRSCDR,發送出去,發送出去 AIX #1 AIX #1 CPX #$09 ;9 CPX #$09 ;9個數據輸出個數據輸出 BNE SA-REPEAT BNE SA-REPEATDISP1:DISP1: NOP NOP LDA ONOFF LDA ONOFF EOR #$1 ; EOR #$1 ;把原把原A.0A.0取反,使燈閃爍取反,使燈閃爍 STA ONOFF STA ONOFF STA PTA STA PTA BRA MAIN BRA
34、 MAIN* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *-中斷矢量中斷矢量- - ORG $FFFE ; ORG $FFFE ;復位矢量復位矢量 DW MainInit: DW MainInit:備注闡明備注闡明: 單片機與單片機與PCPC機運用串行異機運用串行異步通訊。在此程序下,經過步通訊。在此程序下,經過PCPC機下的機下的VB6.0VB6.0控制程序構成一定控制程序構成一定功能的微機控制系統。功能的微機控制系統。鍵盤編程實驗鍵盤編程實驗 實驗目
35、的實驗目的 實驗器材實驗器材 硬件接線硬件接線 軟件功能軟件功能 程序清單程序清單 備注闡明備注闡明實驗目的實驗目的:鍵盤查詢,鍵盤中斷,鍵盤查詢,鍵盤中斷,鍵值識別,鍵盤編碼鍵值識別,鍵盤編碼. .實驗器材實驗器材: :1.SD-1型在線編程實驗板型在線編程實驗板2.導線假設干導線假設干硬件接線硬件接線: :紅線為學生接線紅線為學生接線PTC3PTA7PTA6PTA5PTA4PTA3PTA2PTA1PTA0PTC0PTC1PTC2MOTOROLA GP32 MCUPTC4內置電阻內置電阻VCC 2 DE 鍵值表鍵值表: : 1 EE 3 BE 4 7E 5 ED 6 DD 7 DD 8 7D
36、 9 EB 0 DB A BB B 7B C E7 D D7 E B7 F 77鍵值鍵值定義定義軟件功能軟件功能: : 開場運轉時,指示燈開場運轉時,指示燈7 7亮,等待鍵盤按鍵。亮,等待鍵盤按鍵。 按下按下“D D鍵進入運轉形狀,指示燈鍵進入運轉形狀,指示燈7 7閃爍。閃爍。 在指示燈在指示燈7 7閃爍形狀,按閃爍形狀,按“0-90-9恣意一鍵,恣意一鍵,指示燈指示燈3-03-0顯示對應的二進制值顯示對應的二進制值0 0為燈為燈亮,亮,1 1為燈暗,如為燈暗,如1 1的二進制為的二進制為00010001,顯,顯示應為示應為“亮亮亮暗,按亮亮亮暗,按“A-FA-F恣意一恣意一鍵,指示燈鍵,指示
37、燈3-03-0全暗。全暗。程序清單程序清單: : 程序闡明程序闡明 口地址定義口地址定義 數據區定義數據區定義 主程序主程序 鍵盤中斷初始化鍵盤中斷初始化子程序子程序 掃描讀鍵值子程序掃描讀鍵值子程序 鍵盤中斷子程序鍵盤中斷子程序 鍵盤轉化為詳細值鍵盤轉化為詳細值子程序子程序 延時程序子程序延時程序子程序 中斷矢量中斷矢量* *-程序闡明程序闡明-* * *文件名:文件名:key.asmkey.asm* *運用運用4 4* *4 4鍵盤實現輸入控制鍵盤實現輸入控制* *硬件銜接:硬件銜接:* * PTA7-4 PTA7-4接接4 4根鍵盤列線根鍵盤列線X4-1X4-1,PTA3-0PTA3-0
38、接接4 4根鍵盤行線根鍵盤行線* * Y4-1Y4-1* * PTC4 PTC4接指示燈接指示燈7 7OUT7OUT7,PTC3-0PTC3-0分別接指示燈分別接指示燈3-03-0OUT3-0OUT3-0* *程序描畫:程序描畫:1.1.開場運轉時,指示燈開場運轉時,指示燈7 7亮,等待鍵盤按鍵亮,等待鍵盤按鍵* * 2. 2.按下按下“D D鍵進入運轉形狀,指示燈鍵進入運轉形狀,指示燈7 7閃爍閃爍* * 3. 3.在指示燈在指示燈7 7閃爍形狀,按閃爍形狀,按“0-90-9恣意一鍵,指示燈恣意一鍵,指示燈3-03-0* *顯示對應的二進制值顯示對應的二進制值0 0為燈亮,為燈亮,1 1為燈
39、暗,如為燈暗,如1 1的二進制為的二進制為00010001* *顯示應為顯示應為“亮亮亮暗,按亮亮亮暗,按“A-FA-F恣意一鍵,指示燈恣意一鍵,指示燈3-03-0全暗。全暗。* *目的:鍵盤查詢,鍵盤中斷,鍵值識別,鍵盤編碼目的:鍵盤查詢,鍵盤中斷,鍵值識別,鍵盤編碼* *-* *-口地址定義口地址定義-DDRA EQU $0004 ;A口數據方向存放器口數據方向存放器PTA EQU $0000 ;A口數據存放器口數據存放器PTAPUE EQU $000D ;A口上拉電阻允許存放器口上拉電阻允許存放器DDRC EQU $0006 ;C口數據方向存放器口數據方向存放器PTC EQU $0002
40、 ;C口數據存放器口數據存放器INTKBSCR EQU $001A ;鍵盤形狀和控制存放器鍵盤形狀和控制存放器INTKBIER EQU $001B ;鍵盤中斷允許存放器鍵盤中斷允許存放器* *-數據區定義變量定義數據區定義變量定義- ORG $0090 ORG $0090TMPVAR1 RMB 1 ;TMPVAR1 RMB 1 ;變量變量TMPVAR1TMPVAR1,緩沖運用,緩沖運用TMPVAR2 RMB 1 ;TMPVAR2 RMB 1 ;變量變量TMPVAR2TMPVAR2,緩沖運用,緩沖運用KBVALUE RMB 1 ;KBVALUE RMB 1 ;存放鍵盤按鍵值存放鍵盤按鍵值PTCS
41、TATE RMB 1 ;PTCPTCSTATE RMB 1 ;PTC口形狀變量口形狀變量RAMstartAddr equ $0040 ;RAMRAMstartAddr equ $0040 ;RAM的起始地址因芯片不同可以的起始地址因芯片不同可以更改更改FlashStartAddr equ $8000 ;FlashStartAddr equ $8000 ;程序開場地址因芯片不同可以程序開場地址因芯片不同可以更改更改* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
42、ORG FlashStartAddr ; ORG FlashStartAddr ;程序起始地址程序起始地址* *-主程序主程序-MainInit:MainInit: NOP NOP LDA #$00 ; LDA #$00 ;定義定義C C口之前復位口之前復位PTCPTC STA PTC STA PTC LDA #%00011111 ; LDA #%00011111 ;定義定義C C口口4-04-0為輸出為輸出 STA DDRC ;C STA DDRC ;C口接指示燈口接指示燈 STA PTC ; STA PTC ;初始時指示燈熄滅初始時指示燈熄滅 BCLR 4,PTC ;PTC4 BCLR 4
43、,PTC ;PTC4為為0 0,指示燈,指示燈7 7點亮點亮 ; ;表示進入開場形狀表示進入開場形狀;-A;-A口接鍵盤,查詢等待按鍵口接鍵盤,查詢等待按鍵- - LDA #$00 ; LDA #$00 ;定義定義A A口前復位口前復位PTAPTA STA PTA STA PTA LDA #%00001111 LDA #%00001111 STA DDRA STA DDRA LDA #%11110000 LDA #%11110000 STA PTAPUE STA PTAPUEMainIni1:MainIni1: JSR KBA ; JSR KBA ;獲得鍵值在獲得鍵值在A A中中 STA KB
44、VALUE ; STA KBVALUE ;鍵值放在鍵值放在KBVALUEKBVALUE中中 ; ;作為作為KBdefKBdef的入口的入口 JSR KBdef ; JSR KBdef ;詳細值在詳細值在A A中中 cmp #$46 ;ASCII cmp #$46 ;ASCII“F“F能否為能否為$46$46 BNE MainIni1 ; BNE MainIni1 ;不是等待不是等待“F“F鍵鍵;-;-設置鍵盤中斷設置鍵盤中斷-JSR KBInit ;JSR KBInit ;已按已按“F“F鍵,進入運轉形狀,鍵,進入運轉形狀, ; ;執行鍵盤中斷初始化子程序執行鍵盤中斷初始化子程序 BCLR 1
45、,INTKBSCR ; BCLR 1,INTKBSCR ;開放鍵盤中斷開放鍵盤中斷 CLI CLI ;-開場總循環處置鍵盤開場總循環處置鍵盤-Start: NOP;-使燈閃爍使燈閃爍- BCLR 4,PTC ;PTA4=0,電亮指示燈,電亮指示燈7 LDA #$08 JSR Delaysub BSET 4,PTC ;PTA4=1,熄滅指示燈,熄滅指示燈7 LDA #$08 JSR Delaysub JSR Kbde ; JSR Kbde ;執行鍵盤轉化為詳細值子程序,執行鍵盤轉化為詳細值子程序, ; ;轉成鍵定義值轉成鍵定義值 CMP #$39 ; CMP #$39 ;測試能否是測試能否是0-
46、90-9 BHI Start1 ; BHI Start1 ;大于大于ASCIIASCII“9 9到到Start1Start1 SUB #$30 ; SUB #$30 ;數字實踐值數字實踐值=ASCII=ASCII值值-$30-$30 STA PTC ; STA PTC ;送送PTCPTC口口, ,由指示燈由指示燈3-03-0顯示顯示 BRA Start BRA StartStart1:Start1: LDA #$FF ; LDA #$FF ;大于大于ASCIIASCII“9 9, ,消滅指示燈消滅指示燈 STA PTC STA PTC JMP Start ; JMP Start ;繼續循環處置
47、繼續循環處置* *- -鍵盤中斷初始化子程序從鍵盤中斷初始化子程序從KBInitKBInit開場開場-* *功能:對被定義為鍵盤中斷的引腳初始化,但未開放鍵盤中斷功能:對被定義為鍵盤中斷的引腳初始化,但未開放鍵盤中斷* *占用占用CPUCPU內存放器:內存放器:A A* *-KBInit:KBInit: LDA #$00 ; LDA #$00 ;定義定義A A口之前復位口之前復位PTAPTA STA PTA STA PTA LDA #%00001111 ; LDA #%00001111 ;定義定義A A口口7-47-4輸入作為列,輸入作為列, ;3-0 ;3-0輸出作為行輸出作為行 STA D
48、DRA STA DDRA LDA #%11110000 ; LDA #%11110000 ;定義定義A A口口7-47-4有上拉電阻有上拉電阻 STA PTAPUE STA PTAPUE BSET 1,INTKBSCR ; BSET 1,INTKBSCR ;屏蔽鍵盤中斷屏蔽鍵盤中斷 LDA #%11110000 ; LDA #%11110000 ;允許允許KBIE7-4PINKBIE7-4PIN中斷進入中斷進入 STA INTKBIER STA INTKBIER BSET 2,INTKBSCR ; BSET 2,INTKBSCR ;去除鍵盤中斷去除鍵盤中斷 RTS RTS* *-掃描讀鍵值子程
49、序從掃描讀鍵值子程序從KBAKBA開場開場-* *功能功能: :掃描一次接在掃描一次接在PTAPTA口的口的4 4* *4 4鍵盤鍵盤PTA7-4PTA7-4接接4 4根鍵盤根鍵盤* *X4-1X4-1,PTA3-0PTA3-0接接4 4根鍵盤行線根鍵盤行線Y4-1Y4-1上的按鍵使上的按鍵使* *用行掃描法,鍵值放在用行掃描法,鍵值放在A A中中, ,假設無按鍵,假設無按鍵,A A中值中值$FF$FF* *占用內存:占用內存:TMPVAR1TMPVAR1緩沖運用緩沖運用* *出口:出口:A=A=鍵值鍵值* *-KBA:KBA: MOV #%11111110,TMPVAR1 ; MOV #%1
50、1111110,TMPVAR1 ;第一根行線為第一根行線為0 0 LDX #$04 ; LDX #$04 ;掃描掃描4 4根行線根行線KB1:KB1: LDA PTA ; LDA PTA ;取取PTAPTA給給A A ORA #%00001111 ;PTA7-4 ORA #%00001111 ;PTA7-4保管原態,保管原態,PTA3-0PTA3-0為為1 1 AND TMPVAR1 ; AND TMPVAR1 ;令令PTAn=0PTAn=0,n=0n=0,1 1,2 2,3 3 STA PTA ; STA PTA ;處置后給處置后給PTAPTA以便查詢以便查詢 NOP NOP NOP NOP
51、 LDA PTA ; LDA PTA ;查第查第n n列上能否有鍵按下列上能否有鍵按下 AND #%11110000 ; AND #%11110000 ;保管保管PTA7-4PTA7-4列值,令低列值,令低PTA3-0=0PTA3-0=0 CBEQA #$F0,KB2 ;A CBEQA #$F0,KB2 ;A等于等于$F0$F0,本行線沒鍵按下,本行線沒鍵按下 ;A ;A不等于不等于$F0,$F0,本行有鍵按下本行有鍵按下 LDA PTA ;A LDA PTA ;A放鍵值放鍵值 BRA KB3 ; BRA KB3 ;轉到轉到KB3KB3終了中斷終了中斷KB2:KB2: SEC ; SEC ;令
52、令C=1C=1 ROL TMPVAR1 ; ROL TMPVAR1 ;使下一個行線為使下一個行線為0 0,查下一行,查下一行 DBNZX KB1 ; DBNZX KB1 ;對行線循環對行線循環 LDA #$FF ; LDA #$FF ;沒有鍵被按下為沒有鍵被按下為$FF$FFKB3:RTSKB3:RTS* *-鍵盤中斷子程序從鍵盤中斷子程序從KBintKBint開場開場-* *功能:鍵盤中斷程序,鍵值放入內存功能:鍵盤中斷程序,鍵值放入內存KBVALUEKBVALUE中中* *調用子程序:掃描法讀鍵值子程序調用子程序:掃描法讀鍵值子程序KBAKBA,* * 鍵盤中斷初始化子程序鍵盤中斷初始化子
53、程序KBInitKBInit* *出口:第出口:第0 0頁內存單元頁內存單元KBVALUEKBVALUE中為鍵值中為鍵值* *-Bint:Bint: PSHH ; PSHH ;維護維護H H SEI SEI BSET 1,INTKBSCR ; BSET 1,INTKBSCR ;制止鍵盤中斷制止鍵盤中斷;-;-以下為中斷程序義務以下為中斷程序義務- - JSR KBA ; JSR KBA ;調子程序調子程序KBAKBA,鍵值放在,鍵值放在A A中中 STA KBVALUE ; STA KBVALUE ;放入內存放入內存KBVALUEKBVALUE;-;-以上為中斷程序義務以上為中斷程序義務- -
54、 PULH ;H PULH ;H出棧出棧 JSR KBInit ; JSR KBInit ;調用鍵盤中斷初始化子程序調用鍵盤中斷初始化子程序 BCLR 1,INTKBSCR ; BCLR 1,INTKBSCR ;開放鍵盤中斷開放鍵盤中斷 CLI CLI RTI RTI* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *-鍵盤轉化為詳細值子程序從鍵盤轉化為詳細值子程序從KBdefKBdef開場開場-* *功能:鍵值轉為鍵盤外表詳細的字符
55、或符號代表值功能:鍵值轉為鍵盤外表詳細的字符或符號代表值* *入口:內存第入口:內存第0 0頁中頁中KBVALUEKBVALUE為鍵值,運用鍵值編號表為鍵值,運用鍵值編號表* *占用占用CPUCPU存放器:存放器:X X存放相對地址存放相對地址* *出口:出口:A=A=鍵定義值鍵定義值* *-KBdef:KBdef: LDHX #$0000 LDHX #$0000 KBkey1:KBkey1: LDA KBTABLE,X LDA KBTABLE,X BEQ KBkey3 ;=0 BEQ KBkey3 ;=0,表示表中未定義此鍵值,表示表中未定義此鍵值 CMP KBVALUE ; CMP KBV
56、ALUE ;與與KBVALUEKBVALUE入口鍵值相比較入口鍵值相比較 BNE KBkey2 ; BNE KBkey2 ;不等,未找到轉不等,未找到轉KBkey2KBkey2 INCX ; INCX ;找到地址加找到地址加1 1 LDA KBTABLE,X ; LDA KBTABLE,X ;取鍵定義值給取鍵定義值給A A BRA KBkeyr BRA KBkeyrKBkey2:KBkey2: INCX INCX INCX INCX BRA KBkey1 BRA KBkey1KBkey3:KBkey3: LDA #$FF ; LDA #$FF ;未定義鍵用未定義鍵用FFFF標志標志KBkeyr
57、: RTSKBkeyr: RTSKBTABLE FCB $EE,1,$DE,2,$BE,3,$7E,4KBTABLE FCB $EE,1,$DE,2,$BE,3,$7E,4 FCB $ED,5,$DD,6,$BD,7,$7D,8 FCB $ED,5,$DD,6,$BD,7,$7D,8 FCB $EB,9,$DB,0,$BB,A,$7B,B FCB $EB,9,$DB,0,$BB,A,$7B,B FCB $E7,C,$D7,D,$B7,E,$77,F FCB $E7,C,$D7,D,$B7,E,$77,F FCB $00 FCB $00* * * * * * * * * * * * * * *
58、* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *-程序延時程序子程序程序延時程序子程序DelaysubDelaysub-* *功能功能: :程序方法延時,延時長短由入口程序方法延時,延時長短由入口A A中的數值決議中的數值決議* *入口:入口:A=A=延時長度延時長度* *占用內存占用內存: :無無* *占用存放器占用存放器:A:A* *-Delaysub:Delaysub: PSHH PSHH PSHX PSHX Delay1:Delay1: LDHX #$5588 LDHX #$5588Delay2:De
59、lay2: NOP NOP AIX #-1 AIX #-1 CPHX #$0000 CPHX #$0000 BNE Delay2 BNE Delay2 DBNZA Delay1 DBNZA Delay1 PULX PULX PULH PULH RTS RTS* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *-中斷矢量中斷矢量- ORG $FFE0 ; ORG $FFE0 ;鍵盤中斷矢量鍵盤中斷矢量 DW KBint DW KBint ORG $FFFE ; ORG
60、 $FFFE ;復位矢量復位矢量 DW MainInit DW MainInit液晶顯示實驗液晶顯示實驗 實驗目的 實驗器材 硬件接線 VB界面 軟件功能 程序清單 備注闡明1.6ms1.6ms CLR-LCD-2-MS: ;CLR-LCD-2-MS: ;延時延時 AIX #-1 AIX #-1 CPHX #0 CPHX #0 LDA #%00000110 ; LDA #%00000110 ;輸入方式設置輸入方式設置: :數據讀寫操作后數據讀寫操作后, , ;AC ;AC自動增自動增1,1,顯示不動顯示不動, ,光標左光標左 JSR LCDCOMMAND JSR LCDCOMMAND LDA
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論