1在鍵盤上輸入數(shù)字,可以在數(shù)碼管上循環(huán)左移顯示。 2直流電機(jī)控制:在鍵盤定義功能鍵,包括正轉(zhuǎn)鍵,反轉(zhuǎn)鍵,速度設(shè)定鍵,復(fù)位鍵?梢詫(shí)現(xiàn)按下速度設(shè)定鍵,然后用數(shù)字鍵輸入速度,并在數(shù)碼管上顯示這一數(shù)字,然后按下正轉(zhuǎn)或者反轉(zhuǎn)鍵,直流電機(jī)開(kāi)始按照這一速度正轉(zhuǎn)或者反轉(zhuǎn),同時(shí)在數(shù)碼管上顯示目前運(yùn)行時(shí)輸出的電壓。按下復(fù)位鍵,電機(jī)按照原運(yùn)轉(zhuǎn)方向相反的方向倒轉(zhuǎn)回到原位。 (附件分別為兩個(gè)的匯編程序)
單片機(jī)源程序如下:
- ;直流電機(jī)調(diào)速實(shí)驗(yàn)
- ;實(shí)驗(yàn)連線
- ;1) DA0832單元的CS連接端口地址300CS
- ;2) DA0832單元的AOUT連接直流電機(jī)INV
- CS0832 EQU 0300H
- CS8279C equ 0fff1h
- CS8279D equ 0fff0h
- DA0V EQU 000H
- DA2V5 EQU 07FH
- DA5V EQU 0fFH
- led0 equ 0fff0h
- led1 equ 0fff1h
- org 0
- mloop: ; mov dptr,#CS0832
- MOV SP,#40H
-
- ;------------------------
- ; 初態(tài)送顯示緩沖區(qū)
- ;------------------------
- xmos: mov r0,#30h
- mov a,#10h
- x35s: mov @r0,a
- inc r0
- cjne r0,#36h,x35s
- inc a
- mov @r0,a
- ;-----------------------------
- ; 掃描待令入口區(qū)
- ;-----------------------------
- xmon: mov r1,#30h
- call dikey ;調(diào)顯示鍵掃
- cjne a,#10h,next ;判數(shù)字鍵還是功能鍵
- next: cjne a,#20h,next1
- sjmp xmon
- next1: cjne r1,#10h,krds
- keep: jNb p1.0,L0
- jNb p1.1,L1
- jNb p1.2,L2
- krds: jnc krdy ;轉(zhuǎn)功能鍵處理
- ;----------------------------
- ; 功能鍵處理入口
- ;-----------------------------
- krdy: mov dptr,#CKEY
- anl a,#03h
- clr c
- rl a
- mov r2,a
- inc a
- movc a,@a+dptr
- push acc
- mov a,r2
- movc a,@a+dptr
- push acc
- ret
- ;-----------------------------
- ; 速度設(shè)置鍵入口
- ;------------------------------
- VSET: mov r1,#30h
- call dikey
- cjne a,#20h,ste1
- sjmp VS
- ste1: mov @r1,a
- call diled
- ljmp xmon
- ;----------------------------
- ; 反轉(zhuǎn)鍵處理入口
- ;----------------------------
- LEFT: mov dptr,#CS0832
- mov r1,#30h
- mov a,#DA0V
- cjne @r1,#10h,qia1
- sjmp qia2
- qia1: mov a,#0fh
- mov b,@r1
- mul ab
- qia2: movx @dptr,a
- acall disp0
- clr p1.0
- setb p1.1
- setb p1.2
- ljmp mloop
- ;----------------------------
- ; 正轉(zhuǎn)鍵處理入口
- ;----------------------------
-
-
- RIGHT: mov dptr,#CS0832
- mov r1,#30h
- mov a,#DA5V
- cjne @r1,#10h,qia3
- sjmp qia4
- qia3: mov a,#0fh
- mov b,@r1
- mul ab
- add a,#7fh
- qia4: movx @dptr,a
- clr p1.1
- setb p1.0
- setb p1.2
- acall disp1
- ljmp mloop
- ;----------------------------
- ; 停止鍵處理入口
- ;----------------------------
-
-
-
- STOP: mov dptr,#CS0832
- mov a,#DA2V5
- movx @dptr,a
- clr p1.2
- setb p1.1
- setb p1.0
- acall disp1
- ljmp mloop
-
- ;-----------------------
- ; 刷新顯示子程序
- ;-----------------------
- diled: mov r1,#35h ;從高位開(kāi)始
- mov 38h,#80h
- dilex: mov dptr,#led1 ;送字位代碼
- mov a,38h
- movx @dptr,a
- mov dptr,#ZOE0 ;索字形代碼
- mov a,@r1
- movc a,@a+dptr
- mov dptr,#led0 ;送當(dāng)前字形
- movx @dptr,a
- inc 38h
- dec r1
- cjne r1,#2fh,dilex ;末滿六位轉(zhuǎn)
- Ret
- ;-----------------------
- ; 鍵盤掃描子程序
- ;-----------------------
- dikey: mov r4,#00h ;設(shè)査鍵次數(shù)
- dikrd: mov dptr,#led1 ;指狀態(tài)端口
- movx a,@dptr ;索鍵盤標(biāo)志
- anl a,#07h ;屏敝無(wú)效位
- jnz keys ;有鍵按下轉(zhuǎn)
- djnz r4,dikrd ;末完繼續(xù)査
- mov a,#20h ;定義無(wú)鍵碼
- ret ;返回
- keys: mov dptr,#led0 ;指鍵入端口
- movx a,@dptr ;讀當(dāng)前鍵碼
- mov r2,a ;存當(dāng)前鍵碼
- anl a,#03h ;保留低二位
- xch a,r2 ;取當(dāng)前鍵碼
- anl a,#38h ;舍棄無(wú)效位
- rr a ;鍵碼的壓縮
- orl a,r2 ;與低二拼接
- mov dptr,#GOJZ ;指鍵碼表首
- movc a,@a+dptr ;索取鍵碼值
- ret ;返回
- ;------------------------
- ; 電壓顯示子程序
- ;------------------------
- disp0:
- xrl a,#0FFh
- clr c
- subb a,#7Fh
- mov r7,a
- mov r2,#85h
- mov r0,#11
- mov dptr,#CS8279C
- mov a,r2
- movx @dptr,a
- mov dptr,#ledmap ;指字形表首
- mov a,r0 ;取送顯數(shù)據(jù)
- movc a,@a+dptr ;索字形代碼
- mov dptr,#CS8279D ;指向字形口
- movx @dptr,a ;送當(dāng)前字形
- mov b,#50
- mov a,r7
- div ab
- mov r0,a
- dec r2
- mov dptr,#CS8279C
- mov a,r2
- movx @dptr,a
- mov dptr,#ledmap ;指字形表首
- mov a,r0 ;取送顯數(shù)據(jù)
- movc a,@a+dptr ;索字形代碼
- mov dptr,#CS8279D ;指向字形口
- movx @dptr,a ;送當(dāng)前字形
- dec r2
- mov r0,#10
- mov dptr,#CS8279C
- mov a,r2
- movx @dptr,a
- mov dptr,#ledmap ;指字形表首
- mov a,r0 ;取送顯數(shù)據(jù)
- movc a,@a+dptr ;索字形代碼
- mov dptr,#CS8279D ;指向字形口
- movx @dptr,a ;送當(dāng)前字形
- dec r2
- mov a,#5
- xch a,b
- div ab
- mov r0,a
- mov dptr,#CS8279C
- mov a,r2
- movx @dptr,a
- mov dptr,#ledmap ;指字形表首
- mov a,r0 ;取送顯數(shù)據(jù)
- mov dptr,#CS8279D ;指向字形口
- movx @dptr,a ;送當(dāng)前字形
- dec r2
- mov dptr,#CS8279C
- mov a,r2
- movx @dptr,a
- mov dptr,#ledmap ;指字形表首
- mov a,b ;取送顯數(shù)據(jù)
- movc a,@a+dptr ;索字形代碼
- mov dptr,#CS8279D ;指向字形口
- movx @dptr,a ;送當(dāng)前字形
- ret
- disp1: clr c
- subb a,#7Fh
- mov r7,a
- mov r2,#85h
- mov r0,#0
- mov dptr,#CS8279C
- mov a,r2
- movx @dptr,a
- mov dptr,#ledmap ;指字形表首
- mov a,r0 ;取送顯數(shù)據(jù)
- movc a,@a+dptr ;索字形代碼
- mov dptr,#CS8279D ;指向字形口
- movx @dptr,a ;送當(dāng)前字形
- mov b,#50
- mov a,r7
- div ab
- mov r0,a
- dec r2
- mov dptr,#CS8279C
- mov a,r2
- movx @dptr,a
- mov dptr,#ledmap ;指字形表首
- mov a,r0 ;取送顯數(shù)據(jù)
- movc a,@a+dptr ;索字形代碼
- mov dptr,#CS8279D ;指向字形口
- movx @dptr,a ;送當(dāng)前字形
- dec r2
- mov r0,#10
- mov dptr,#CS8279C
- mov a,r2
- movx @dptr,a
- mov dptr,#ledmap ;指字形表首
- mov a,r0 ;取送顯數(shù)據(jù)
- movc a,@a+dptr ;索字形代碼
- mov dptr,#CS8279D ;指向字形口
- movx @dptr,a ;送當(dāng)前字形
- dec r2
- mov a,#5
- xch a,b
- div ab
- mov r0,a
- mov dptr,#CS8279C
- mov a,r2
- movx @dptr,a
- mov dptr,#ledmap ;指字形表首
- mov a,r0 ;取送顯數(shù)據(jù)
- movc a,@a+dptr ;索字形代碼
- mov dptr,#CS8279D ;指向字形口
- movx @dptr,a ;送當(dāng)前字形
- dec r2
- mov dptr,#CS8279C
- mov a,r2
- movx @dptr,a
- mov dptr,#ledmap ;指字形表首
- mov a,b ;取送顯數(shù)據(jù)
- movc a,@a+dptr ;索字形代碼
- mov dptr,#CS8279D ;指向字形口
- movx @dptr,a ;送當(dāng)前字形
-
- ret
-
- ledmap: db 0ch,9fh,4ah,0bh,99h,29h,28h,8fh ;01234567
- db 08h,09h,0f7h,0fbh,6ch,1ah,68h,0e8h ;89ABCDEF
- ;------------------------
- ;-------功能鍵定義
- CKEY: dw LEFT,RIGHT,STOP,VS
- ;------字形代碼
- ZOE0: DB 0ch,9fh,4ah,0bh,99h,29h,28h,8fh,08h,09h,88h
- ; 0 1 2 3 4 5 6 7 8 9 a
- DB 38h,6ch,1ah,68h,0e8h,0ffh,0c0h
- ; b c d e f 關(guān)閉 p.
- ;------按鍵代碼(20h為溢出碼)
- GOJZ: db 13h,12h,11h,10h,0dh,0ch,0bh,0ah,0eh,03h ;0~9
- db 06h,09h,0fh,02h,05h,08h,00h,01h,04h,07h ;a~13
- db 20h,20h,20h,20h,20h,20h,20h,20h,20h,20h,20h,20h;
- END
復(fù)制代碼
所有資料51hei提供下載:
匯編程序.rar
(3.34 KB, 下載次數(shù): 35)
2019-1-6 16:50 上傳
點(diǎn)擊文件名下載附件
|