有關于一個8086的程序設計
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.gif (180.7 KB, 下載次數: 29)
下載附件
2023-11-6 13:15 上傳
I]T]8UVDA3QC3DA$E{[)G7S.png (70.09 KB, 下載次數: 44)
下載附件
仿真
2023-11-5 23:09 上傳
- sseg segment ;2023年11月5日 編輯人;YX
- dw 200 dup (?)
- sseg ends
- dseg segment
- num dw 0;初始化數字變量為0
- ;3種不同的燈光變幻組合
- data1 db 0FEh,0FCh,0F8h,0F0h,0E0h,0C0h,80h,00h,00h
- data2 db 00h,00h,0FFh,00h,0FFh,00h,0FFh,00h,80h,0C0h,0E0h,0F0h,0F8h,0FCh,0FEh,0FFh
- data3 db 7Eh,3Ch,18h,00h,0FFh,00h,0FFh,00h,0FFh,00h,18h,3Ch,7Eh,0FFh
- dseg ends
- cseg segment para public 'code'
- assume ss:sseg,cs:cseg,ds:dseg
- start:
- mov ax,dseg
- mov ds,ax
- mov dx,0206h ;取8255的控制端口的地址
- mov al,82h ;初始化8255的A口為輸出模式,B口為輸入模式
- out dx,al
- exut:
- mov num,0h
- mov dx,0200h ;取8255的端口A的地址
- mov aL,0FFh ;使8255的 PAO-PA7全為1
- out dx,al ;使所有的燈LED全滅
- begin:
- call ledflash ;調用燈光變幻過程
- mov num,0
- ret
- ledflash proc ;檢測開關閉合,以便確定哪種閃爍方式
- mov dx,0202h ;取8255的端口B的地址
- in al,dx ;檢測B口輸入信號
- choice1:
- cmp al,0f7h
- jne choice2
- mov si,offset data1 ;置第一種燈光變幻組合
- jmp set
- choice2:
- cmp al,0efh
- jne choice3
- mov si,offset data2 ;置第二種燈光變幻組合
- jmp set
- choice3:
- cmp al,0dfh
- jne speed1
- mov si,offset data3 ;置第三種燈光變幻組合
- jmp set
- speed1: ;檢測加速按鍵并設置cx的值
- cmp al,0fdh
- jne speed2
- mov cx,000fh ;設置較小的cx
- jmp here
- speed2: ;檢測減速按鍵并設置cx的值
- cmp al,0fbh
- jne choice4
- mov cx,05ffh ;設置較大的cx
- jmp here
- choice4: ;每盞燈亮完檢測開關,如果停止開關沒有按下跳到choice5,如果停止開關按下燈全滅
- cmp al,0bfh
- jne choice5
- jmp exit
- choice5: ;檢測num是否為0,若為0掃描開關,若不為0繼續執行
- cmp num,0h
- jne set
- jmp ledflash
- set:
- mov cx,005fh ;設置初始cx
- jmp here
- here:
- mov bx,num
- mov al,[si+bx]
- mov dx,0200h ;取8255的端口A的地址
- out dx,al ;輸出加電數據到端口A
- inc num ;改變數字變量的值
- cmp num,09h
- je exit
- dl4: mov bx,00ffh
- dl3: dec bx
- jnz dl3
- dec cx
- jnz dl4
- jmp ledflash
- exit:
- mov num,0
- ret
- ledflash endp
- cseg ends
- end start
復制代碼
仿真程序:
8086設計--可控時間間隔且可變換閃爍方式的流水燈.zip
(135.8 KB, 下載次數: 10)
2023-11-5 23:07 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|