欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1906|回復: 1
打印 上一主題 下一主題
收起左側

求sst89e516rd制作6位數碼管硬件仿真匯編程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:260841 發表于 2018-3-9 13:16 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
求助一下程序,現在在做這個硬件仿真,
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

無效樓層,該帖已經被刪除
板凳
ID:260841 發表于 2018-4-3 20:27 | 只看該作者
           STRT  EQU  P0.4                ; 定義 (等價代換)        第一列
       SEC   EQU P0.5                   ;矩陣鍵盤接口處
       MIN   EQU P0.6
       HOUR  EQU P0.7                //第4列

           CL EQU  P2.6          ;蜂鳴器
       ORG 0000H
       SJMP MAIN
       ORG 000BH       ;TO溢出時的  定時器 T0中斷程序入口地址
       AJMP T0INT0     ;TO溢,跳到T0INT0       
       ORG 0050H


MAIN: CLR  P0.0                        ;鍵盤的第一行有效
      MOV  P2,#0FFH    ; 初值                   11111111         給所有的位選端置零
      MOV R4,#20
                 ;計20次 后面中斷進位                 
      MOV TMOD,#01H   ; TO為模式1   //向TMOD寄存器寫入立即數01h。
      MOV TH0,#03CH   //表示對定時器T0賦初值低八位
      MOV TL0,#0B0H
          SETB TR0        ;      開啟TO  定時/計數器0開始運行 TR0是單片機會響應定時/計數器0的啟動位   與下面不同 這個是開啟  下面這個是允許
      SETB ET0         ;T0中斷允許控制位位 開定時器中斷0
      SETB EA         ;開中斷         開總中斷
   
  MOV 30H,#00H     ; 清零30H-32H地址單元:
  MOV 31H,#00H
  MOV 32H,#00H                ;時分秒的儲存單元






KS:  LCALL DISP        ;作用:無任何按鍵,動態顯示
     JB    SEC, KM   ;檢查 秒鍵 按否?當sec等于1就去執行KM,否則往下執行
KSS: LCALL DISP
     LCALL   DALY2        ;顯示
     JNB   SEC,KSS    ;$當前地址,產生中斷
     AJMP  SINC        ;松  秒鍵    (秒+1)

KM: LCALL DISP
    JB MIN,KH          ;分調整按鍵(按,不管)
KMM:LCALL DISP
        LCALL  DALY2
    JNB MIN,KMM
    AJMP MINC          ;(分+1)

KH: LCALL DISP
    JB HOUR,K1         ;時調整按鍵 (按,不跳)
KHH:LCALL DISP
        LCALL  DALY2
    JNB HOUR,KHH
    AJMP HINC         ;(時+1)

SINC: LCALL  DISP  //秒
      LCALL  CLO
          LCALL  DISP
      INC 30H            ;秒調整   30H單元的數據+1
      MOV A,30H        
      CJNE A,#60,SINC0   ;A=60時,不管 ,   否則跳
      MOV 30H,#0         ;A=60   30H單元的數據清零   60/10=6.0   (6與0)    59/10=(5與9)
SINC0:AJMP KS  //A的值跟60不同就回去再掃

MINC: LCALL  DISP   //分
      LCALL  CLO
          LCALL  DISP
      INC 31H           ;31H單元的數據+1
      MOV A,31H
      CJNE A,#60,MINC0
MOV 31H,#0
MINC0: AJMP KM          ;返回"主跳"

HINC: LCALL  DISP  //時
      LCALL  CLO
          LCALL  DISP
      INC   32H      
      MOV A,32H
CJNE A,#24,HINC0
MOV 32H,#0
HINC0:AJMP KH  

k1: LCALL DISP
    JB STRT,KS    ;檢查開始鍵
K11:LCALL DISP
        LCALL  DALY2
    JNB STRT,K11  //當strt等于0時就跳k11
    AJMP START        

START:LCALL  DISP
      LCALL  CLO
          LCALL  DISP
      CPL TR0                       ;////入口開始.將TR0位給取反。以來實現一個暫停
      AJMP K1

DISP:  MOV A,30H   //單元中的數據/10,分離個位與十位     將地址為30H的寄存器內的數據送入A,結果A=由該寄存器內所存的實際數值決定。
       MOV B,#10
       DIV AB     ;  ;A除B,商存入A,余存入B
       MOV 40H,B   ;余數(秒個位數)
       MOV 41H,A   ;商(秒十位數)

       MOV A,31H        //分
       MOV B,#10
       DIV AB          // ;A除B,商存入A,余存入B
       MOV 42H,B   ;余數(分個位數)
       MOV 43H,A   ;商(分十位數)
     
          MOV A,32H          //時
      MOV B,#10
       DIV AB
       MOV 44H,B   ;余數(時個位數)
       MOV 45H,A   ;商(時十位數)

  ////////時間在數碼管顯示//////////
     MOV A,40H   ;秒個位
     ACALL SEG7
     MOV P1,A
     CLR P2.5
     ACALL DLY
     SETB P2.5

      MOV A,41H   ;秒十位
      ACALL SEG7
      MOV P1,A
     CLR P2.4
         ACALL DLY
         SETB P2.4

MOV A,42H   ;分個位
ACALL SEG7
MOV P1,A
CLR P2.3
ACALL DLY
SETB P2.3

MOV A,43H   ;分十位
ACALL SEG7
MOV P1,A
CLR P2.2
ACALL DLY
SETB P2.2

MOV A,44H   ;時個位
ACALL SEG7
MOV P1,A
CLR P2.1
ACALL DLY
SETB P2.1

MOV A,45H  ;時十位
ACALL SEG7
MOV P1,A
CLR P2.0
ACALL DLY
SETB P2.0
RET




T0INT0:PUSH ACC
        PUSH PSW
        CLR TR0                                         ;暫停定時器T0
        MOV A,#0B5H            ;  ; 10110101
        ADD A,TL0                          ;         低八位初值修正
    MOV TH0,#03CH         ; 00111100                  ;定時中斷子程序。重裝定時常數
        MOV TL0,A                       ;   重裝初值(低8位修正值)
        SETB TR0                                ;開啟定時器T0
        DJNZ R4,T0INTR          ;  ;R4減1,不為0短跳轉TOINTR
        MOV R4,#20
    INC 30H                 ;1S,秒存儲單元內數+1
    MOV A,30H  
        CJNE A,#60,T0INTR        ;未滿60S,跳出中斷。
    MOV 30H,#0              ;滿60S,秒單元清零
    INC 31H                 ;分+1
    MOV A,31H
    CJNE A,#60,T0INTR   ;未滿60分,跳出中斷。
    MOV 31H,#0     ;滿60分,分單元清零
    INC 32H   ;時+1
    MOV A,32H
    CJNE A,#24,T0INTR   ;未滿24,跳出中斷。
    MOV 32H,#0   ;滿24時,時單元清零
T0INTR:        POP PSW
            POP ACC
        RETI



CLO:  CLR CL                                           ;P2.6蜂鳴器         CL0是蜂鳴器子程序
      LCALL  DALY1
          SETB   CL
      RET

DALY1:   ;誤差 0us
          MOV R6,#0D7H          //0.215毫秒

DALY2:   ;誤差 0us
         MOV R6,#01H        //        消抖

DL0:
    MOV R5,#2FH
    DJNZ R5,$
    DJNZ R6,DL0
    RET

DLY:    MOV R7,#2
D1:     MOV R6,#40
        DJNZ R6,$
        DJNZ R7,D1
        RET


DL3:
    MOV R5,#2DH
    DJNZ R5,$
    DJNZ R6,DL3
    NOP
    NOP
    RET

SEG7:   INC A              ; A加1        結果存在A
        MOVC A,@A+PC                        //查表取值送入A
        RETI                    ; 中斷返回

        DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H         //0-9的表格
                END



這是矩陣鍵盤加數碼管顯示
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表