標(biāo)題: 單片機(jī)匯編程序?qū)崿F(xiàn)紅綠燈轉(zhuǎn)換 [打印本頁(yè)]

作者: lltt    時(shí)間: 2018-11-18 16:23
標(biāo)題: 單片機(jī)匯編程序?qū)崿F(xiàn)紅綠燈轉(zhuǎn)換
通過(guò)masm軟件運(yùn)行該程序

單片機(jī)源程序如下:
  1. STACK SEGMENT STACK 'STACK'
  2.       DW 128 DUP(?)
  3. STACK ENDS
  4. DATA SEGMENT;定義8255和8253各端口地址數(shù)據(jù)
  5. PA8255 EQU 3000H
  6. PB8255 EQU 3200H
  7. PC8255 EQU 3400H
  8. CON8255 EQU 3600H
  9. CLK08253 EQU 3800H
  10. CLK18253 EQU 3A00H
  11. CLK28253 EQU 3C00H
  12. CON8253 EQU 3E00H
  13. DATA ENDS
  14. CODE SEGMENT
  15.      ASSUME CS:CODE,DS:DATA,SS:STACK
  16. START:
  17.      PUSH DS
  18.      SUB AX,AX
  19.      PUSH AX
  20.      MOV AX,DATA
  21.      MOV DS,AX
  22.      MOV DX,CON8253;初始化8253通道0
  23.      MOV AL,36H;00110110
  24.      OUT DX,AL
  25.      MOV DX,CLK08253
  26.      MOV AX,2710H
  27.      OUT DX,AL
  28.      MOV AL,AH
  29.      OUT DX,AL;通道0初始化完成,工作方式3,初始計(jì)數(shù)值為10000,周期為0.01s
  30.      MOV DX,CON8253;通道2初始化完成,工作方式3,計(jì)數(shù)初值為100,由clk0輸入以后周期為1s
  31.      MOV AL,96H;10010110
  32.      OUT DX,AL
  33.      MOV DX,CLK28253
  34.      MOV AL,64H
  35.      OUT DX,AL
  36.      MOV DX,CON8255
  37.      MOV AL,80H
  38.      OUT DX,AL;8255初始化完成,A,B,C均工作在方式0,即基本的輸入輸出
  39.      MOV AL,10H;初始化各燈的狀態(tài)
  40.      MOV DX,PA8255
  41.      OUT DX,AL;紅燈全亮
  42.      MOV DX,PB8255
  43.      MOV AL,1FH
  44.      OUT DX,AL;黃燈全滅
  45.      MOV DX,PC8255
  46.      MOV AL,1FH
  47.      OUT DX,AL;綠燈全滅
  48.      CALL DELAY
  49. BEGIN:
  50.      MOV DX,CON8255
  51.      MOV AL,80H
  52.      OUT DX,AL
  53.      MOV AL,10H
  54.      MOV DX,PB8255
  55.      OUT DX,AL
  56.      MOV DX,PA8255
  57.      MOV AL,15H
  58.      OUT DX,AL;05H=00000101,2、4紅燈亮
  59.      MOV DX,PB8255
  60.      MOV AL,1FH
  61.      OUT DX,AL;0FH=00001111,黃燈全滅
  62.      MOV DX,PC8255
  63.      MOV AL,1AH
  64.      OUT DX,AL;OAH=00001010,1,3綠燈亮
  65.      CALL DELAY
  66.      MOV DX,CON8253
  67.      MOV AL,70H
  68.      OUT DX,AL;通道1初始化完成,工作方式0,01110000
  69.      MOV DX,CLK18253
  70.      MOV AX,0BB8H
  71.      OUT DX,AL
  72.      MOV AL,AH
  73.      OUT DX,AL;0BB8H=3000,即通道1的計(jì)數(shù)值為3000,也就是30S
  74. LOP30_1:
  75.      MOV AL,0;掃描PC4口是否有高電平輸入
  76.      MOV DX,CON8255
  77.      MOV AL,88H;88
  78.      OUT DX,AL;改PC口為輸入方式,準(zhǔn)備讀入PC4的值
  79.      MOV DX,PC8255
  80.      IN AL,DX
  81.      AND AL,10H;取PC4的值
  82.      CMP AL,10H
  83.      JNZ LOP30_1;未檢測(cè)到高電平則繼續(xù)循環(huán)檢測(cè)
  84.      MOV DX,CON8255
  85.      MOV AL,80H
  86.      OUT DX,AX      
  87.      MOV DX,PA8255
  88.      MOV AL,15H;05H=00000101;2,4紅燈亮
  89.      OUT DX,AL
  90.      MOV DX,PC8255
  91.      MOV AL,1FH;0FH=00001111
  92.      OUT DX,AL;1、3綠燈滅
  93.      MOV DX,PB8255
  94.      MOV AL,1AH;0AH=00001010
  95.      OUT DX,AL;1、3黃燈開始閃
  96.      MOV CX,0
  97. LOP5_1:
  98.      MOV DX,CON8255;檢測(cè)PC7高電平
  99.      MOV AL,88H
  100.      OUT DX,AL;改PC口為輸入方式,準(zhǔn)備讀入PC7
  101.      MOV DX,PC8255
  102.      IN AL,DX
  103.      AND AL,80H;取PC7
  104.      CMP AL,80H
  105.      JNZ LOP5_1;如果不是高電平則不需要進(jìn)行延時(shí)
  106.      CALL DELAY
  107.      INC CX
  108.      CMP CX,05H
  109.      JNZ LOP5_1   
  110.      MOV DX,CON8255
  111.      MOV AL,80H
  112.      OUT DX,AL
  113.      MOV AL,10H
  114.      MOV DX,PB8255
  115.      OUT DX,AL
  116.      MOV DX,PA8255
  117.      MOV AL,1AH
  118.      OUT DX,AL;0AH=00001010,1、3紅燈亮
  119.      MOV DX,PB8255
  120.      MOV AL,1FH
  121.      OUT DX,AL;0FH=00001111,黃燈全滅
  122.      MOV DX,PC8255
  123.      MOV AL,15H
  124.      OUT DX,AL;05H=00000101,2、4綠燈亮
  125.      CALL DELAY
  126.      MOV DX,CON8253;重新寫入方式控制字,0方式
  127.      MOV AL,70H
  128.      OUT DX,AL
  129.      MOV DX,CLK18253
  130.      MOV AX,0BB8H
  131.      OUT DX,AL
  132.      MOV AL,AH
  133.      OUT DX,AL;0BB8H=3000,即通道1的計(jì)數(shù)值為3000,也就是30S
  134. LOP30_2:
  135.      MOV AL,0;掃描PC4口是否有高電平輸入
  136.      MOV DX,CON8255
  137.      MOV AL,88H
  138.      OUT DX,AL;改PC口為輸入方式,準(zhǔn)備讀入PC4的值
  139.      MOV DX,PC8255
  140.      IN AL,DX
  141.      AND AL,10H;取PC4的值
  142.      CMP AL,10H
  143.      JNZ LOP30_2;未檢測(cè)到高電平則繼續(xù)循環(huán)檢測(cè)
  144.      MOV DX,CON8255
  145.      MOV AL,80H
  146.      OUT DX,AX
  147.      MOV DX,PA8255
  148.      MOV AL,1AH;OAH=00001010,1,3路口紅燈亮
  149.      OUT DX,AL
  150.      MOV DX,PC8255
  151.      MOV AL,1FH;0FH=00001111
  152.      OUT DX,AL;2、4綠燈滅
  153.      MOV DX,PB8255
  154.      MOV AL,15H;05H=00000101
  155.      OUT DX,AL;2、4黃燈開始閃爍
  156.      MOV CX,0
  157. LOP5_2:
  158.      MOV DX,CON8255;檢測(cè)PC7高電平
  159.      MOV AL,88H
  160.      OUT DX,AL;改PC口為輸入方式,準(zhǔn)備讀入PC7
  161.      MOV DX,PC8255
  162.      IN AL,DX
  163.      AND AL,80H;取PC7
  164.      CMP AL,80H
  165.      JNZ LOP5_2
  166.      CALL DELAY
  167.      INC CX
  168.      CMP CX,05H
  169.      JNZ LOP5_2
  170.      JMP START;下一次循環(huán)
  171.      
  172. DELAY PROC NEAR
  173.      MOV DX,120;延時(shí)子程序
  174. DELAY1:
  175.      MOV BX,1000
  176. DELAY2:
  177.      DEC BX
  178.      CMP BX,0
  179.      JNZ DELAY2
  180.      DEC DX
  181.      CMP DX,0
  182.      JNZ DELAY1
  183.      RET
  184. DELAY ENDP
  185. CODE ENDS
  186.      END START
復(fù)制代碼

所有資料51hei提供下載:
123456.rar (1.15 KB, 下載次數(shù): 7)



作者: admin    時(shí)間: 2018-11-18 17:28
補(bǔ)全原理圖或者詳細(xì)說(shuō)明一下電路連接即可獲得100+黑幣




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1