久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3811|回復: 0
收起左側

單片機LED燈控制器匯編語言微機實驗報告+思考題+源碼

[復制鏈接]
ID:408531 發表于 2018-11-8 09:46 | 顯示全部樓層 |閱讀模式
實驗名稱 實驗三  綜合實驗-LED燈控制器
  • 任務要求

加深對定時/計數器、中斷、IO端口的理解,掌握定時/計數器、中斷的應用編程技術及中斷程序的調試方法。

  • 設計思路

首先設計大體框架,分成三個主要功能:

1.P0.0口產生三種頻率的波形控制指示燈,同時完成P3.1口的波形輸出

2.動態顯示的方法在八段數碼管上面顯示當前的模式與頻率值

3.通過kint控制三種頻率的轉換

三、資源分配

1.R1:外部中斷數據存儲位置,根據數據的不同執行不同的模式,可以再00,01,02三個模式依次切換

2.R4:判斷切換和轉到當前所處的模式

3.R2,R3,R6:控制八段數碼管和led燈蜂鳴器

4.R5:數碼管模式切換

5. 20H: P0口的等效輸出口

  • 流程圖

     


  • 程序測試方法與結果

可以先在89C51運行,查看P3.1 P0.0波形是否正確

無外部中斷的時候,波形沒20秒有規律地變化一次

觸發外部中斷的時候

此時波形不再是規律的20秒切換一次模式,而是隨著中斷的觸發進入新的模式,在下次中斷到來或者到達20秒的時候進入下一個模式。


思考題

  • 若想實現3種閃爍方式的持續時間在5s-60s范圍內可調,且每種方式的持續時間各不相同,應如何設計程序?

   可以改變程序寄存器中的循環次數,比如模式為1hz的時候,循環取反40次,若要讓時間可以調節,通過改變寄存器的值來調節循環次數,就可以改變持續時間。但是在5HZ 的時候可能需要兩個寄存器來定值,因為此時持續時間為60秒,需要寄存器的值大于600,已經超過了255。


其它說明:
1.標題:黑體,小四號
2. 正文:宋體,五號,1.5倍行距
3.流程圖使用 SmartDraw7  或Visio軟件繪制
4.不要加封面


源代碼 (含文件頭說明、語句行注釋)

  1. STOP4:
  2.            ORG   0000H
  3.            LJMP  MAIN         ; 轉主程序
  4.                                ORG 0003H
  5.                                LJMP INTER0
  6.           ORG   000BH         ; T0的中斷入口
  7.           LJMP ITOP                      ; 轉T0中斷處理程序
  8.                                             ORG 001BH                                          ; T1的中斷入口
  9.                       JMP IMER_INT1                           

  10.          ORG   0100H
  11. MAIN: LCALL Init_Device
  12. P0T EQU 20H                  ;設置P0口的輸出值
  13.                 MOV P0T,#0FFH
  14.                 MOV R1,#0FFH     ;外部中斷數據存儲位置,根據數據的不同執行不同的模式,可以再00,01,02三個模式依次切換
  15.               MOV   R3,#0                              ;間接選址的時候的指針中間值
  16.                             MOV R4,#00H                ;控制三種模式的區分的自變量
  17.               SETB EX0                                          ;開啟外部中斷
  18.               SETB PX0
  19.               SETB EX0
  20.               MOV  DPTR,#SEGTAB1
  21. MOV   SP,#60H        ; 設堆棧指針
  22.   MOV   TMOD,#11H ; 設置T0和T1為方式1
  23. ACALL PT0M0          ; 調用初始化子程序PT0M0
  24. HERE:

  25.         JB P0.1 ,HERE        ; 自身跳轉
  26.                             LJMP CHECK
  27.                             RET
  28.                             ITOP:
  29.               CJNE R4,#00H,PT0M022JIN                              ;模式選擇的中間跳板
  30.      CJNE R2,#202,delay1m

  31.        MOV   TL0, #15H    ; 延時程序指令,延時100ms
  32.        MOV   TH0,#0E7H
  33.                  CLR P3.1
  34.                        DEC R2
  35.                  RETI
  36.                 PT0M022JIN  :                                                                                       ;跳到另一個模式
  37.                 CJNE R5,#00,ITOP2JIN                                              ;判斷是否已經進行過初始化 ,為0說明未進行初始化
  38.                               
  39.                 LJMP                PT0M022

  40.                             delay1m:                               ;讓蜂鳴器響一次
  41.                                  DEC R2
  42.        MOV   TL0, #15H    ; T0置初值
  43.        MOV   TH0,#0E7H
  44.        CPL   P0T.0                  ;P0.0的狀態取反
  45.                  MOV P0,P0T
  46.                             CJNE R2,#200,NORING1    ;開始的時候響一次
  47.                             SETB P3.1                              ;
  48.                             RETI
  49.                             ITOP2JIN:LJMP ITOP2              
  50.                             NORING1:  CLR P3.1
  51.                                CJNE R2,#01,NORING2
  52.                                           SETB P3.1                                             ;結束的時候響一次
  53.                                           RETI
  54.                             NORING2:
  55.                             CLR P3.1
  56.                             CJNE R2,#00H,GOON1
  57.                             LJMP STOP1
  58.                  GOON1:
  59.        RETI

  60.                 PT0M0222JIN:
  61.                  LJMP              PT0M022
  62.                  PT0M0:
  63.               CJNE  R4,#00H, PT0M0222JIN                                          ;選擇模式,如果不是模式0,就跳到下一個初始化程序
  64.               MOV   TH1,  #0FEH                ;初始化程序,延時一秒后進入模式
  65.               MOV   TL1,  #0C2H
  66.               MOV  DPTR,#SEGTAB1
  67.                 CLR P3.1
  68.                 MOV R2,#202
  69.       SETB  TR0;允許T0中斷
  70.       SETB  ET0              ;全局開中斷
  71.                 MOV   TMOD, #11H            
  72.                   MOV   TH1,  #0FEH                ;延時100ms
  73.                 MOV   TL1,  #0C2H
  74.                  SETB  ET1                      ;允許定時器1中斷

  75.                   SETB  TR1                       ;打開定時器1
  76.        SETB  EA
  77.        RETI
  78. IMER_INT12JIN:LJMP IMER_INT12            
  79. IMER_INT1:
  80. CJNE R4,#00H,IMER_INT12JIN   ;              位選信號的對應的模式選擇
  81.               MOV P1,#00H

  82.               CJNE R3,#00H,FIVEHZ1
  83.                             MOV   TMOD, #11H              ;定時器0,1工作方式1,16位
  84.               MOV   TH1,  #0FEH               
  85.               MOV   TL1,  #0C2H
  86.               SETB  ET1                      ;允許定時器0中斷
  87.               SETB  EA                       ;允許全局中斷
  88.               SETB  TR1                       ;打開定時器0
  89.                             MOV  A, R3
  90.               MOVC   A, @A+DPTR
  91.               INC       R3
  92.               PUSH ACC                                             ;存儲段碼
  93.   CLR A
  94.   ORL A,P0T                                             ;作為p0口的等價輸出口
  95.               ORL A,#0D0H                                          ;進行移位

  96.               MOV P0T,A
  97.    MOV P0,P0T
  98.               POP ACC                                             ;彈出段碼
  99.               MOV     P1,A
  100. RETI

  101. FIVEHZ1:  CJNE R3,#01H,FIVEHZ2              ;位選信號
  102.               MOV   TMOD, #11H              ;定時器0,1工作方式1,16位
  103.               MOV   TH1,  #0FEH
  104.               MOV   TL1,  #0C2H
  105.               SETB  ET1                      ;允許定時器0中斷
  106.               SETB  EA                       ;允許全局中斷
  107.               SETB  TR1                       ;打開定時器0
  108.               MOV     A, R3
  109.               MOVC   A, @A+DPTR
  110.               INC       R3
  111.               PUSH ACC



  112.               MOV A,P0T
  113.    ADD  A,#0C0H
  114.               MOV P0T,A
  115.               MOV P0,P0T
  116.               POP ACC
  117.               MOV     P1,A
  118.   RETI
  119.               FIVEHZ2:
  120.                             MOV   TMOD, #11H              ;定時器0,1工作方式1,16位
  121.               MOV   TH1,  #0FEH               
  122.               MOV   TL1,  #0C2H
  123.               SETB  ET1                      ;允許定時器0中斷
  124.               SETB  EA                       ;允許全局中斷
  125.               SETB  TR1                       ;打開定時器0
  126.               MOV     A, R3
  127.               MOVC   A, @A+DPTR
  128.               INC       R3
  129.               PUSH ACC

  130.     MOV A,P0T
  131.               ADD A,#0C0H
  132.               MOV P0T,A
  133.               MOV P0,P0T


  134.               POP ACC
  135.               MOV    P1,A
  136.                             MOV    R3,#0
  137. RETI
  138.    ;**********************************************************************
  139.    ;***********************************************************************
  140.      STOP1:MOV P1,#00H                                 ;熄滅LED
  141.             
  142.               MOV R4,#01H

  143.                                PT0M022:                                                                          ;模式二的初始化
  144.                                CJNE R4,#01H, PT0M023JIN                               ;作為跳板進行跳到下一個模式

  145.     MOV   TL0, #66H    ;                                            延時1秒
  146.        MOV   TH0,#83H
  147.                                             MOV DPTR,#SEGTAB2
  148.                 CLR P3.1
  149.                 MOV R5,#42
  150.       SETB  TR0;允許T0中斷
  151.       SETB  ET0              ;全局開中斷
  152.                 SETB IT0
  153.                 MOV   TMOD, #11H              ;
  154.                   MOV   TH1,  #0FEH                ;2ms方波
  155.                 MOV   TL1,  #0C2H
  156.                  SETB  ET1                      ;允許定時器0中斷

  157.                   SETB  TR1                       ;打開定時器0
  158.        SETB  EA
  159.        RETI
  160. PT0M023JIN:                 LJMP PT0M023                                                          ;跳到下一個模式
  161. ITOP2:                             CJNE R4,#01,ITOP3

  162.       CJNE R5,#42,delay1m2

  163.               MOV   TL0, #0CBH    ; T0置初值
  164.        MOV   TH0,#06H
  165.                  CLR P3.1
  166.                        DEC R5
  167.                  RETI
  168.                                ITOP3:LJMP ITOP4
  169.                             delay1m2:
  170.                                  DEC R5
  171.        MOV   TL0, #66H    ; ;延時0.5秒
  172.        MOV   TH0,#83H
  173.        CPL   P0T.0                  ;P0.0的狀態取反
  174.                  MOV P0,P0T
  175.                             CJNE R5,#40,NORING11                 ;讓蜂鳴器響
  176.                             SETB P3.1
  177.                             RETI
  178.                             NORING11:  CLR P3.1                 ;結束的時候熄滅蜂鳴器
  179.                                CJNE R5,#01,NORING21
  180.                                           SETB P3.1
  181.                                           RETI
  182.                             NORING21:
  183.                             CLR P3.1
  184.                             CJNE R5,#00H,GOON11                            ;已經達到了20秒,清零
  185.                             LJMP STOP3
  186.                  GOON11:
  187.        RETI


  188. IMER_INT13JIN:LJMP              IMER_INT13
  189.                
  190. IMER_INT12:
  191. CJNE R4,#01H,IMER_INT13JIN                  ;切換到下一個模式
  192.               MOV P1,#00H

  193.               CJNE R3,#00H,FIVEHZ12
  194.                             MOV   TMOD, #11H              ;定時器0,1工作方式1,16位
  195.               MOV   TH1,  #0FEH               
  196.               MOV   TL1,  #0C2H
  197.               SETB  ET1                      ;允許定時器0中斷
  198.               SETB  EA                       ;允許全局中斷
  199.               SETB  TR1                       ;打開定時器0
  200.                             MOV  A, R3

  201.               MOVC   A, @A+DPTR
  202.               INC       R3
  203.               PUSH ACC
  204.   CLR A
  205.   ORL A,P0T
  206.               ORL A,#0D0H

  207.               MOV P0T,A
  208.    MOV P0,P0T
  209.               POP ACC
  210.               MOV     P1,A
  211. RETI

  212. FIVEHZ12:  CJNE R3,#01H,FIVEHZ22
  213.               MOV   TMOD, #11H              ;定時器0工作方式1,16位
  214.               MOV   TH1,  #0FEH                ;2ms方波
  215.               MOV   TL1,  #0C2H
  216.               SETB  ET1                      ;允許定時器0中斷
  217.               SETB  EA                       ;允許全局中斷
  218.               SETB  TR1                       ;打開定時器0
  219.               MOV     A, R3
  220.               MOVC   A, @A+DPTR
  221.               INC       R3
  222.               PUSH ACC



  223.               MOV A,P0T
  224.    ADD  A,#0C0H
  225.               MOV P0T,A
  226.               MOV P0,P0T
  227.               POP ACC
  228.               MOV     P1,A
  229.   RETI
  230.               FIVEHZ22:
  231.                             MOV   TMOD, #11H              ;定時器0工作方式1,16位
  232.               MOV   TH1,  #0FEH                ;2ms方波
  233.               MOV   TL1,  #0C2H
  234.               SETB  ET1                      ;允許定時器0中斷
  235.               SETB  EA                       ;允許全局中斷
  236.               SETB  TR1                       ;打開定時器0
  237.               MOV     A, R3
  238.               MOVC   A, @A+DPTR
  239.               INC       R3
  240.               PUSH ACC

  241.     MOV A,P0T
  242.               ADD A,#0C0H
  243.               MOV P0T,A
  244.               MOV P0,P0T


  245.               POP ACC
  246.               MOV     P1,A
  247.                             MOV    R3,#0
  248. RETI
  249. ;**************************************************************************************
  250. ;***************************************************************************************
  251. ;***************************************************************************************
  252.   STOP3:
  253.                    MOV P1,#00H
  254.               MOV R4,#02H
  255.    LJMP               PT0M023
  256.                                PT0M023:
  257.                                CJNE R6,#00H,ITOP4

  258.     MOV   TL0, #66H    ; T0置初值
  259.        MOV   TH0,#83H
  260.                                              MOV DPTR,#SEGTAB3
  261.                 CLR P3.1
  262.                 MOV R6,#22 ;延時1秒
  263.       SETB  TR0;允許T0中斷
  264.       SETB  ET0              ;全局開中斷
  265.                 MOV   TMOD, #11H              ;
  266.                   MOV   TH1,  #0FEH                ;2ms方波
  267.                 MOV   TL1,  #0C2H
  268.                  SETB  ET1                      ;允許定時器0中斷

  269.                   SETB  TR1                       ;打開定時器0
  270.        SETB  EA
  271.        RETI
  272. ITOP4:
  273.                                MOV DPTR,#SEGTAB3
  274. MOV P1,#00H
  275. CJNE R6,#22,delay1m3

  276.               MOV   TL0, #0CBH    ; 延時一秒
  277.        MOV   TH0,#06H
  278.                  CLR P3.1
  279.                        DEC R6
  280.                                           MOV DPTR,#SEGTAB3
  281.                  RETI
  282.                
  283.                             delay1m3:
  284.                                  DEC R6
  285.        MOV   TL0, #0CBH    ; 1S
  286.        MOV   TH0,#06H
  287.        CPL   P0T.0                  ;P0.0的狀態取反
  288.                  MOV P0,P0T
  289.                             CJNE R6,#20,NORING13
  290.                             SETB P3.1
  291.                             RETI
  292.                             LJMP NORING11
  293.                             NORING13:  CLR P3.1
  294.                                CJNE R6,#01,NORING23
  295.                                           SETB P3.1
  296.                                           RETI
  297.                             NORING23:
  298.                             CLR P3.1
  299.                             CJNE R6,#00H,GOON13
  300.                             MOV R4,#00H
  301.                             LJMP STOP4
  302.                  GOON13:
  303.        RETI



  304.                
  305. IMER_INT13:
  306.               MOV P1,#00H

  307.               CJNE R3,#00H,FIVEHZ13
  308.                             MOV   TMOD, #11H              ;定時器0工作方式1,16位
  309.               MOV   TH1,  #0FEH                ;2ms方波
  310.               MOV   TL1,  #0C2H
  311.               SETB  ET1                      ;允許定時器0中斷
  312.               SETB  EA                       ;允許全局中斷
  313.               SETB  TR1                       ;打開定時器0
  314.                             MOV  A, R3
  315.               MOVC   A, @A+DPTR
  316.               INC       R3
  317.               PUSH ACC
  318.   CLR A
  319.   ORL A,P0T
  320.               ORL A,#0D0H

  321.               MOV P0T,A
  322.    MOV P0,P0T
  323.               POP ACC
  324.               MOV     P1,A
  325. RETI

  326. FIVEHZ13:  CJNE R3,#01H,FIVEHZ23
  327.               MOV   TMOD, #11H              ;定時器0工作方式1,16位
  328.               MOV   TH1,  #0FEH                ;2ms方波
  329.               MOV   TL1,  #0C2H
  330.               SETB  ET1                      ;允許定時器0中斷
  331.               SETB  EA                       ;允許全局中斷
  332.               SETB  TR1                       ;打開定時器0
  333.               MOV     A, R3
  334.               MOVC   A, @A+DPTR
  335.               INC       R3
  336.               PUSH ACC



  337.               MOV A,P0T
  338.    ADD  A,#0C0H
  339.               MOV P0T,A
  340.               MOV P0,P0T
  341.               POP ACC
  342.               MOV     P1,A
  343.   RETI
  344.               FIVEHZ23:
  345.                             MOV   TMOD, #11H              ;定時器0工作方式1,16位
  346.               MOV   TH1,  #0FEH                ;2ms方波
  347.               MOV   TL1,  #0C2H
  348.               SETB  ET1                      ;允許定時器0中斷
  349.               SETB  EA                       ;允許全局中斷
  350.               SETB  TR1                       ;打開定時器0
  351.               MOV     A, R3
  352.               MOVC   A, @A+DPTR
  353.               INC       R3
  354.               PUSH ACC

  355.     MOV A,P0T
  356.               ADD A,#0C0H
  357.               MOV P0T,A
  358.               MOV P0,P0T


  359.               POP ACC
  360.               MOV     P1,A
  361.                             MOV    R3,#0
  362. RETI


  363.    INTER0: INC R1
  364.    CJNE R1,#03H,FUZHI
  365.    MOV R1,#00H
  366. FUZHI:  MOV 71H,R1
  367. MOV R4,71H
  368.    LJMP  PT0M0
  369. BACK:  LJMP HERE
  370. CHECK:
  371. LJMP   HERE





  372. SEGTAB1: DB 0B7H, 0FCH, 6EH
  373. SEGTAB2: DB 0DH, 0FCH, 6EH
  374. SEGTAB3: DB 0FDH,0B6H, 6EH
復制代碼

完整的Word格式文檔51黑下載地址:

單片機 LED燈控制.doc (469.5 KB, 下載次數: 8)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产亚洲一区二区三区在线观看 | 国产免费一区二区三区网站免费 | 日韩欧美在线观看 | 先锋影音资源网站 | 久久精品一区二区三区四区 | 亚洲欧美精品一区 | 欧美人成在线视频 | 日韩欧美三级电影在线观看 | 久久伊人操 | 久久国产精品一区 | 国产精品久久国产精品99 gif | 亚洲午夜电影 | 欧洲一区二区三区 | 五月婷婷视频 | 综合久久综合久久 | 精品在线一区二区三区 | 精品国产久 | 欧美三级电影在线播放 | 国产欧美久久精品 | 亚洲精品在线免费观看视频 | 欧美精品91爱爱 | 久久久久久毛片免费观看 | 成年人免费在线视频 | www.国产91| 国产专区视频 | 一级毛片网| 日韩三级在线 | 欧美在线一区二区视频 | 中文字幕一区二区三区精彩视频 | 欧美中文字幕一区 | 日韩欧美在线一区 | 久久久久久中文字幕 | 午夜理伦三级理论三级在线观看 | 一区二区av | 97在线观视频免费观看 | 久久性 | 日本不卡一区二区三区在线观看 | 欧美激情精品久久久久 | 一级大片免费 | 日韩在线电影 | 日韩电影一区 |