1. 程式人生 > >彙編入門---8255IO控制LED燈實驗

彙編入門---8255IO控制LED燈實驗

彙編繼續,獻上8255 IO控制LED燈實驗程式碼

(1)8255 A口輸出控制流水燈,B口輸入,B口最低位控制流水燈流向

;Made by X-Ray龍
;8255流水燈顯示實驗


IOY0         EQU   3000H          ;片選IOY0對應的埠始地址
MY8255_A     EQU   IOY0+00H*4     ;8255的A口地址
MY8255_B     EQU   IOY0+01H*4     ;8255的B口地址
MY8255_C     EQU   IOY0+02H*4     ;8255的C口地址
MY8255_MODE  EQU   IOY0+03H*4     ;8255的控制暫存器地址

STACK1 SEGMENT STACK
        DW 256 DUP(?)
STACK1 ENDS

DATA SEGMENT 
LA      DB  ?                     ;定義資料變數
DATA ENDS

CODE SEGMENT
        ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA
       MOV DS,AX
       
       MOV DX,MY8255_MODE         ;初始化8255工作方式
       MOV AL,82H                 ;工作方式0,A口輸出,B口輸入
       OUT DX,AL

       MOV  LA,01H
LOOP1: 
       MOV  DX,MY8255_B       
       IN   AL,DX                 ;讀B口的一位元組資料記憶體放到AL中
       MOV  BL,AL
       TEST BL,00000001B          ;判斷B口最低位0或1,是0則跳C1左迴圈,是1則跳C2右迴圈
       JZ   C1
       JMP  C2

       
C1:    MOV  AL,LA                 ;左迴圈,用變數LA來存放上一次移位後的資料
       CALL DALLY                 ;延時,方便人眼觀察出燈的變化
       MOV  DX,MY8255_A
       OUT  DX,AL
       ROL  AL,1
       MOV  LA,AL
       JMP  C3
       
C2:    MOV  AL,LA                 ;右迴圈
       CALL DALLY
       MOV  DX,MY8255_A
       OUT  DX,AL
       ROR  AL,1
       MOV  LA,AL
       JMP  C3
       
C3:    MOV AH,1                   ;判斷是否有按鍵按下
       INT 16H
       JZ  LOOP1                  ;無按鍵則跳回繼續迴圈,有則退出

QUIT:  MOV AX,4C00H               ;結束程式退出
       INT 21H

DALLY PROC NEAR                   ;軟體延時子程式
       PUSH CX
       PUSH AX
       MOV  CX,0FFFH
D1:    MOV  AX,0FFFFH
D2:    DEC  AX
       JNZ  D2
       LOOP D1
       POP  AX
       POP  CX
       RET
DALLY ENDP

CODE ENDS
     END START

      (2) A口輸出控制LED,B口輸入由開關控制高低電平,實現開關控制LED燈亮滅,同時把八位LED狀態回顯到螢幕

;Made by X-Ray龍
;8255基本輸入輸出實驗


IOY0         EQU   3000H           ;片選IOY0對應的埠始地址
MY8255_A     EQU   IOY0+00H*4     ;8255的A口地址
MY8255_B     EQU   IOY0+01H*4     ;8255的B口地址
MY8255_C     EQU   IOY0+02H*4     ;8255的C口地址
MY8255_MODE  EQU   IOY0+03H*4     ;8255的控制暫存器地址

STACK1 SEGMENT STACK
        DW 256 DUP(?)
STACK1 ENDS

CODE SEGMENT
        ASSUME CS:CODE

START: MOV DX,MY8255_MODE         ;初始化8255工作方式
       MOV AL,82H                 ;工作方式0,A口輸出,B口輸入
       OUT DX,AL

LOOP1: MOV DX,MY8255_B            ;讀B口
       IN  AL,DX
       MOV DX,MY8255_A            ;寫A口
       OUT DX,AL

       MOV CX,0008H
       MOV BL,10000000B
C1:    TEST AL,BL                 
       JZ   C2
       CALL SHOW1                 ;顯示1
C2:    TEST AL,BL
       JNZ  C3
       CALL SHOW2                 ;顯示0     
C3:    SHR BL,1
       LOOP C1
       
       CALL CHANGE                ;換行
       MOV AH,1                   ;判斷是否有按鍵按下
       INT 16H
       JZ  LOOP1                  ;無按鍵則跳回繼續迴圈,有則退出

QUIT:  MOV AX,4C00H               ;結束程式退出
       INT 21H
       
SHOW1  PROC NEAR
       PUSH AX
       MOV AH,02H
       MOV DL,31H
       INT 21H
       POP AX
       RET 
SHOW1  ENDP
       
SHOW2  PROC NEAR
       PUSH AX
       MOV AH,02H
       MOV DL,30H
       INT 21H 
       POP AX         
       RET 
SHOW2  ENDP   

CHANGE PROC NEAR 
       PUSH AX
       MOV  AH,02H
       MOV  DL,0AH
       INT  21H
       MOV  AH,02H
       MOV  DL,0DH
       INT  21H
       POP  AX   
       RET
CHANGE ENDP        

CODE ENDS
     END START




相關推薦

彙編入門---8255IO控制LED實驗

彙編繼續,獻上8255 IO控制LED燈實驗程式碼(1)8255 A口輸出控制流水燈,B口輸入,B口最低位控制流水燈流向;Made by X-Ray龍 ;8255流水燈顯示實驗 IOY0 EQU 3000H ;片選IOY0對應的埠始地

CC2530學習路線-基礎實驗-GPIO 控制LED亮滅(1)

內部 執行 了解 toc 平時 如果 繼續 技術 發光二極管 目錄 1.前期預備知識 1.1 新大陸ZigBee模塊LED燈電路 1.2 CC2530相關寄存器 1.3 寄存器操作技巧 1.4 CPU空轉延時 1.4 操作流程圖 2.程序代碼 The End 1.前

STM32 嵌入式學習入門(3)——STM32F103 按鍵輸入控制LED

STM32 嵌入式學習入門(3)—— STM32F103 按鍵輸入控制LED燈 按鍵是微控制器上一個很重要的輸入裝置,也很容易掌握,只要明白了IO口最基本的使用,就可以操作按鍵了。 我們的目的是控制開發板上板載的三個按鍵來操作開發

STM32 嵌入式學習入門(2)——STM32的GPIO介紹 STM32 嵌入式學習入門(3)——STM32F103 按鍵輸入控制LED

STM32簡介及STM32學習方法簡介 STM32是新的基於ARM核心的32位MCU系列,該核心為ARM公司為要求高效能、低成本、低功耗的嵌入式應用專門設計的Cortex-M核心,該核心採用標準的ARM架構。該核心具有超前的體系結構以及高效能、低電壓、低功耗,且

CC2530基礎實驗之串列埠控制LED

/************************************************************** * 檔名稱:uart2.c * 功 能:PC機控制發光二極體亮滅 *****************************

arm彙編按鍵控制led

例項一:按下就亮個燈.text .global _start _start: mov r7,lr @初始化按鍵 ldr r0,=0xe0200c40 ldr r1,=0x0 str r1,[

樹莓派實驗一:控制LED

輸出,控制LED燈。 這是一個簡單的電路,如圖,如果Pin是高電平,發光二極體會亮,如果是低電平,則不亮。注意,Pin和Gnd之間除了發光二極體以後,還有一個電阻R1,這是防止短路燒電子板的。 Gnd是地線的意思,相當於電池的負極。GPIO的9號,14

java操作樹莓派GPIO控制LED--結合springboot實現介面呼叫

1、概述 本文使用java結合springboot實現了對樹莓派GPIO介面的操作以達到控制LED燈的功能 2、pom檔案如下: <project xmlns="http://maven.apache.org/POM/4.0.0"      &nb

arduino學習系列——按鍵控制LED

一、器材 arduino UNO、麵包板、按鍵、連線線 二、連線圖 按鍵的兩邊一邊接地,另一邊與引腳2相連 三、程式碼 #define LED 13 #define INPUT_KEY 2 int val = 0; void setup(){ pinMode(LED,OUTPU

STM32-自學筆記(9.SysTick定時器控制LED閃爍,程式用到的庫函式介紹)

1.SysTick_CLKSourceConfig 函式原型:viod SysTick_CLKSourceConfig (u32 SysTick_CLKSource) 功能:選擇SysTick的時鐘源 引數:SysTick_CLKSource:SysTick時鐘源 引數:S

STM32-自學筆記(8.使用STM32的SysTick定時器控制LED閃爍)

SysTick定時器,被稱為“系統節拍時鐘”。SysTick屬於ARM  Cortex-M3核心的一個內設,STM32也帶有SysTick定時器。 SysTick定時器的基本結構 SysTick工作原理: SysTick從時鐘源介面獲得時鐘驅動 從重灌暫存器將

uboot-彙編實現點亮LED

背景     有時候在除錯新專案開發板,上電啟動後串列埠完全沒有列印資訊,開發板沒有一點資訊反饋,這時候我們需要在uboot程式碼的stage1階段彙編程式碼中實現LED點亮來測試CPU是否載入了啟動程式碼,以此來判斷整個CPU和開發板的狀態。 實現     整體實現流

雲中樹莓派(4):利用聲音感測器控制Led

1. 聲音感測器及其配置 聲音感測器如下圖所示: 將 VCC 引腳接入樹莓派 5V 引腳,將 GND 引腳接入樹莓派 GND 引腳,將 OUT 引腳接入樹莓派 GPIO20。 要注意,模組在環境聲音強度達不到設定閾值時,OUT輸出高電平(1),當外界環境聲音強度超過設定閾值時

樹莓派使用wiringPi控制LED

硬體連線: 1,樹黴派.麵包板,公對母杜邦線,LED二極體,200歐左右電阻 二極體的正極連線一個200歐姆左右的電阻,然後連線到樹黴派的5V引腳,對應著2號引腳,如下圖所示, 負極連線GND,即連線為0V的任意引腳. 連線的電路圖如下: 連線好的實物圖如下: 軟

STM32F407ZET6 用串列埠通過鍵盤控制LED的亮滅

1、串列埠定義 串列埠通訊是一種裝置間非常常用序列通訊(資料互動)方式,因為它比較簡單便捷,大部分電子裝置支援串列埠通訊方式,電子工工程師除錯裝置時常用的介面 序列通訊:佔用I/O較少,速度上較慢點 並行通訊:佔用I/O較多,速度上快速 2、

用定時器控制Led閃爍

實驗目的 閃燈程式在嵌入式學習中猶如“Hello World!”在C/C++語言學習中一樣經典。它以簡單的方式引導了無數的嵌入式愛好者。通過本節的學習你可以基本瞭解STM32的GPIO以及基本定時器的使用。 硬體說明 本例程需要一個定時器和一個LED,其中LED就是擴充套件板上的紅色LED接在PD3上且正極接

字元裝置驅動控制led

開發板:龍芯1B PC:ubuntu13.10 本程式為字元裝置驅動,提供控制led燈功能,如要實現控制需要自己寫應用程式,開啟驅動檔案就可控制led燈,led燈通過gpio控制 #include <linux/init.h> #include <lin

ESP8266-01之NodeMCU(lua)實現遠端控制LED

開發環境 ESP-01 wifi模組 LualLoader NodeMCU nodemcu_float_0.9.6-dev_20150704.bin nodemcu_integer_0.9.6-de

BLE 安卓APP控制LED的實現

//注:參考AmoMcu原始碼修改。 開啟APP,檢查藍芽是否開啟BluetoothAdapter mBluetoothAdapter; final BluetoothManager bluetoothManager =(BluetoothManager) getSys

【醬菜創客】ESP8266連線伺服器實現遠端控制LED

#include <ESP8266WiFi.h> WiFiClient client; #define relay1 2 //繼電器連線在8266的GPIO2上 const char *ssid = "xxxx";//這裡是我的wifi,你使用時修改為你要連線的wifi ssid con