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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機—一起學匯編

[復制鏈接]
跳轉到指定樓層
樓主

/******************
語言:   匯編
項目:   1位數碼管顯示 0-F      
芯片:   STC 12C2052AD   PDIP-20
日期:   2019.2.18
編寫:   ZCT      


P3.5       接數碼管COM
P1.0-P1.7  接數碼管段位a b c d e f g dp

******************/

    LED3 BIT P3.5                      ;用 LED3 表示 I/O口P3.5                  


          ORG 000H                    ;程序從地址 00H 開始
          JMP MAIN                    ;調轉到 MAIN 函數

MAIN:
          MOV SP,#60H                 ;堆棧地址設為 60H
          MOV P1,#0FFH                ;P1口賦初值
          MOV P3,#0FFH                ;P3口賦初值
          MOV DPTR,#TABLE             ;表格數據放入指針
          MOV R0,#0                 ;顯示賦初值,并放入寄存器 R0              LOOP:          MOV A,R0                   ;寄存器 R0 內容移入寄存器 A
          MOVC A,@A+DPTR             ;以 寄存器A 為基地址 DPTR為偏移地址,找表格內容移入A
          MOV P1,A                    ;寄存器A 的內容從 P1 口輸出
          CLR LED                     ;P3.5 口輸出0
          CALL DELAY                  ;調用延時子程序
          SETB LED                    ;P3.5 口輸出1
          INC R0                      ;R0 加1
          CJNE R0,#16,LOOP            ;R0與立即數 16比較,不等跳轉到LOOP,相等執行下一條指令
          JMP MAIN                    ;跳轉到 MAIN 函數


DELAY:                                ;1秒延時子程序
          MOV R7,#20
D1:          MOV R6,#200
D2:          MOV R5,#250
          DJNZ R5,$
          DJNZ R6,D2
          DJNZ R7,D1
RET

TABLE:                                ;0-F 表格查詢  
          DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H          ;0-9
          DB 90H,88H,80H,0C6H,0C0H,86H,8EH                     ;A-F
END


IMG_20190218_145011.jpg (2.35 MB, 下載次數: 53)

IMG_20190218_145011.jpg

IMG_20190218_145018.jpg (2.35 MB, 下載次數: 45)

IMG_20190218_145018.jpg

IMG_20190223_223052.jpg (1.57 MB, 下載次數: 43)

IMG_20190223_223052.jpg

IMG_20190223_222133.jpg (93.67 KB, 下載次數: 58)

IMG_20190223_222133.jpg

評分

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

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1 發表于 2019-2-18 15:52 | 只看該作者
本帖需要重新編輯補全電路原理圖即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

板凳
ID:255377 發表于 2019-2-24 14:43 | 只看該作者
延續上次電路

/******************
語言:   匯編
項目:   2位數碼管顯示 0-FF      
芯片:   STC 12C2052AD   PDIP-20
日期:   2019.2.24
編寫:   ZCT      


P3.5       接數碼管COM
P3.4       接數碼管COM
P1.0-P1.7  接數碼管段位a b c d e f g dp
   
******************/

    LED BIT P3.5                      ;用 LED 表示 I/O口P3.5                  
    LED1 BIT P3.4

          ORG 000H                    ;程序從地址 00H 開始
          JMP MAIN                    ;調轉到 MAIN 函數

MAIN:
          MOV SP,#60H                 ;堆棧地址設為 60H
          MOV P1,#0FFH                ;P1口值1
          MOV P3,#0FFH               
          MOV DPTR,#TABLE             ;表格數據放入指針
          MOV R0,#0FFH                 ;顯示賦初值,并放入寄存器 R0
         

DISP:     MOV R1,#30                  ;刷新次數,可以更改立即數看效果。
          MOV A,R0                    ;裝入初值
          MOV B,#16                   ;16進制調整.  可以載人 10  看看效果。
          DIV AB                      ;除
          MOV 30H,B                   ;余數放B
          MOV 31H,A                   ;商放A

LOOP:     MOV A,31H                   ;裝入商
          MOVC A,@A+DPTR              ;查表
          MOV P1,A                    ;顯示A的數據
          CLR LED1                    ;LED1 值0,打開
          CALL DELAY_5MS              ;延時
          SETB LED1                   ;LED1 值1,關閉

          MOV A,30H                   ;同上
          MOVC A,@A+DPTR              
          MOV P1,A                    
          CLR LED                     
          CALL DELAY_5MS              
          SETB LED                    
          DJNZ R1,LOOP                ;刷新次數循環,一定要調至LOOP。動手改跳到DISP看看效果
          INC R0                      ;R0 加1
          CJNE R0,#255,DISP           ;判斷R0 是否等于 255,不等調至DISP
          MOV  R0,#0                  ;清R0
JMP MAIN
         



DELAY_5MS:
         
          MOV R3,#20
D3:          MOV R4,#250
          DJNZ R4,$
          DJNZ R3,D3
RET



TABLE:                                ;0-F 表格查詢  
          DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H          ;0-9
          DB 90H,88H,80H,0C6H,0C0H,86H,8EH                     ;A-F
END
回復

使用道具 舉報

地板
ID:7485 發表于 2019-2-25 09:38 | 只看該作者
1位數碼管改成2位數碼管了?可是你的電路圖是4位數碼管的啊!
回復

使用道具 舉報

5#
ID:255377 發表于 2019-3-2 15:06 | 只看該作者
4位數碼管顯示FFFF,就不發了,自己動手改一下。
本次還是延續發表于 2019-2-18 電路

/******************

語言:   匯編
項目:   4位數碼管時間顯示   
芯片:   STC 12C2052AD   PDIP-20
日期:   2019.3.2
編寫:   ZCT      


P3.5       接數碼管COM
P3.4       接數碼管COM
P3.3       接數碼管COM
P3.2       接數碼管COM
P1.0-P1.7  接數碼管段位a b c d e f g dp


注意:時間精度不高,每分鐘慢4.3秒
   
******************/




/**************數碼管顯示時間初始化***************************/
LED0  BIT  P3.5
LED1  BIT  P3.4
LED2  BIT  P3.3
LED3  BIT  P3.2
SEC   DATA  30H
MIN   DATA  31H
HOUR  DATA  32H

       ORG  0000H
       JMP MAIN
       ORG 000BH
       LJMP TIME_TF0
       ORG 0030H
MAIN:
       MOV SP,#60H
       MOV P1,#0FFH
       MOV P3,#0FFH
       MOV SEC,#59                ;秒鐘初值
       MOV MIN,#59                ;分鐘初值
       MOV HOUR,#00               ;時鐘初值
       MOV DPTR,#TABLE

       MOV TMOD,#11H                   ;設置定時器工作方式為1
       SETB EA                         ;啟動總中斷
       SETB ET0                        ;啟動定時器0中斷
       MOV TH0,#HIGH(65535-50000)      ;定時器0高8位賦值
       MOV TL0,#LOW(65535-50000)       ;定時器0低8位賦值
       SETB TR0                        ;啟動定時器0
       MOV R0,#11                      ;定時器中斷循環次數

       LCALL DISPLAY_MIN               ;顯示分鐘初值      
       LCALL DISPLAY_HOUR              ;顯示時鐘初值
START:                           
       LCALL DISPLAY_MIN               ;顯示定時值
       LCALL DISPLAY_HOUR              
       JMP START     

/***************定時器中斷程序******************/  
TIME_TF0:
       CLR TR0                        ;關閉定時器
       MOV TH0,#HIGH(65535-50000)     ;定時器重新賦值  
       MOV TL0,#LOW(65535-50000)
       SETB TR0                       ;啟動定時器      
       DJNZ R0,RETURN                 ;1秒定時。判斷R0是否為零,返回到START。如等于零,執行下一條。
       MOV R0,#11                     ;重新賦值
       INC SEC                        ;秒寄存器加1
       MOV R3,SEC                     ;秒的值載人R3
       CJNE R3,#60,TIME_TF0           ;判斷SEC不等于60,返回到定時器中斷。 等于60下一條
       MOV SEC,#0                     ;秒值清零
       JMP TIME_MIN                   ;跳到分鐘寄存器

RETURN:RETI

TIME_MIN:                             ;注釋同上
       INC MIN
       MOV R3,MIN
       CJNE R3,#60,TIME_TF0
       MOV MIN,#0
       JMP TIME_HOUR

TIME_HOUR:
       INC HOUR
       MOV R3,HOUR
       CJNE R3,#24,TIME_TF0
       MOV HOUR,#0
       JMP TIME_TF0                   ;返回到定時器中斷


/***************以下參考發表于2月24日的注釋****************/
/***************分鐘顯示程序****************/
DISPLAY_MIN:
              
       MOV A,MIN
       MOV B,#10
       DIV AB

       MOVC A,@A+DPTR
       MOV P1,A
       CLR LED1
       CALL DELAY_10MS
       SETB LED1
       CALL DELAY_10MS

       MOV A,B
       MOVC A,@A+DPTR
       MOV P1,A
       CLR LED0
       CALL DELAY_10MS
       SETB LED0
       CALL DELAY_10MS      
RET
/***************時鐘顯示程序****************/  
DISPLAY_HOUR:
              
       MOV A,HOUR
       MOV B,#10
       DIV AB

       MOVC A,@A+DPTR
       MOV P1,A
       CLR LED3
       CALL DELAY_10MS
       SETB LED3
       CALL DELAY_10MS

       MOV A,B
       MOVC A,@A+DPTR
       MOV P1,A
       CLR LED2
       CALL DELAY_10MS
       SETB LED2
       CALL DELAY_10MS      
RET
/**************延時程序****************/           
DELAY_10MS:
        MOV R7,#10
D1:        MOV R6,#250
D2:        DJNZ R6,D2
        DJNZ R7,D1
RET

TABLE:     
           DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
           DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH
END
回復

使用道具 舉報

6#
ID:255377 發表于 2019-3-3 16:40 | 只看該作者
本次還是延續發表于 2019-2-18 電路
本次更換芯片:STC 12C2052AD更換為STC 12C5608AD
本次增加交替顯示:   秒鐘和分鐘時鐘交替顯示

/******************
語言:   匯編
項目:   4位數碼管時間顯示    時鐘分鐘和秒鐘交替顯示
芯片:   STC 12C5608AD   PDIP-20
日期:   2019.3.3
編寫:   ZCT      


P3.5       接數碼管COM
P3.4       接數碼管COM
P3.3       接數碼管COM
P3.2       接數碼管COM
P1.0-P1.7  接數碼管段位a b c d e f g dp

晶振:12M
   
******************/

/**************數碼管顯示時間初始化***************************/
LED0  BIT  P3.5
LED1  BIT  P3.4
LED2  BIT  P3.3
LED3  BIT  P3.2
SEC   DATA  30H
MIN   DATA  31H
HOUR  DATA  32H

       ORG  0000H
       JMP MAIN
       ORG 000BH
       LJMP TIME_TF0
       ORG 0030H
MAIN:
       MOV SP,#60H
       MOV P1,#0FFH
       MOV P3,#0FFH
       MOV SEC,#57                ;秒鐘初值
       MOV MIN,#58                ;分鐘初值
       MOV HOUR,#19               ;時鐘初值
       MOV 20H,#0
       MOV DPTR,#TABLE
       MOV TMOD,#11H                  ;設置定時器工作方式為1
       MOV IE,#10001010B                     ;啟動總中斷;啟動定時器0中斷                              
       MOV TH0,#HIGH(65535-50000)      ;定時器0高8位賦值
       MOV TL0,#LOW(65535-50000)       ;定時器0低8位賦值
       SETB TR0                        ;啟動定時器
       MOV R0,#20                      ;定時器中斷循環次數
       MOV R1,#20
       LCALL DISPLAY_MIN               ;顯示分鐘初值      
       LCALL DISPLAY_HOUR              ;顯示時鐘初值

START:
       LCALL DISPLAY_MIN               
       LCALL DISPLAY_HOUR
       CJNE R4,#6,START                ;分鐘時鐘顯示時間

DIAPLAYSEC:      
       LCALL DISPLAY_SEC
       CJNE R4,#13,DIAPLAYSEC           ;秒鐘顯示時間
       MOV 20H,#0                       ;交替值清零
       JMP START


/***************定時器中斷程序******************/  
TIME_TF0:
       CLR TR0                        ;關閉定時器
       MOV TH0,#HIGH(65535-50000)     ;定時器重新賦值  
       MOV TL0,#LOW(65535-50000)
       SETB TR0                       ;啟動定時器
       DJNZ R0,RETURN                 ;1秒定時。判斷R0是否為零,返回到START。如等于零,執行下一條。*/      
       MOV R0,#20                     ;重新賦值
       INC SEC                        ;秒寄存器加1

       INC 20H                        ;交替顯示時間
       MOV R4,20H

       MOV R3,SEC                     ;秒的值載人R3
       CJNE R3,#60,TIME_TF0           ;判斷SEC不等于60,返回到定時器中斷。 等于60下一條
       MOV SEC,#0                     ;秒值清零
       JMP TIME_MIN                   ;跳到分鐘寄存器

RETURN:RETI

TIME_MIN:                             ;注釋同上
       INC MIN
       MOV R3,MIN
       CJNE R3,#60,TIME_TF0
       MOV MIN,#0
       JMP TIME_HOUR

TIME_HOUR:
       INC HOUR
       MOV R3,HOUR
       CJNE R3,#24,TIME_TF0
       MOV HOUR,#0
       JMP TIME_TF0                   ;返回到定時器中斷

      
/***************以下參考2月24日的注釋****************/
/***************秒鐘顯示程序****************/
DISPLAY_SEC:

       MOV A,SEC
       MOV B,#10
       DIV AB

       MOVC A,@A+DPTR
       MOV P1,A
       CLR LED1
       CALL DELAY_10MS
       SETB LED1
       CALL DELAY_10MS

       MOV A,B
       MOVC A,@A+DPTR
       MOV P1,A
       CLR LED0
       CALL DELAY_10MS
       SETB LED0
       CALL DELAY_10MS
RET      
/***************分鐘顯示程序****************/
DISPLAY_MIN:
              
       MOV A,MIN
       MOV B,#10
       DIV AB

       MOVC A,@A+DPTR
       MOV P1,A
       CLR LED1
       CALL DELAY_10MS
       SETB LED1
       CALL DELAY_10MS

       MOV A,B
       MOVC A,@A+DPTR
       MOV P1,A
       CLR LED0
       CALL DELAY_10MS
       SETB LED0
       CALL DELAY_10MS      
RET
/***************時鐘顯示程序****************/  
DISPLAY_HOUR:
              
       MOV A,HOUR
       MOV B,#10
       DIV AB

       MOVC A,@A+DPTR
       MOV P1,A
       CLR LED3
       CALL DELAY_10MS
       SETB LED3
       CALL DELAY_10MS

       MOV A,B
       MOVC A,@A+DPTR
       MOV P1,A
       CLR LED2
       CALL DELAY_10MS
       SETB LED2
       CALL DELAY_10MS
RET
/**************延時程序****************/           
DELAY_10MS:
        MOV R7,#1
D1:        MOV R6,#5
D2:        DJNZ R6,D2
        DJNZ R7,D1
RET

TABLE:     
           DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
           DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH
END
回復

使用道具 舉報

7#
ID:255377 發表于 2019-3-5 17:50 | 只看該作者
本次還是延續發表于 2019-2-18 電路
本次更換芯片:STC 12C2052AD更換為STC 12C5608AD


/******************
語言:   匯編
項目:   數碼管點閃爍
芯片:   STC 12C5608AD   PDIP-20
日期:   2019.3.4
編寫:   ZCT      


P3.5       接數碼管COM
P3.4       接數碼管COM
P3.3       接數碼管COM
P3.2       接數碼管COM
P1.0-P1.7  接數碼管段位a b c d e f g dp

晶振:12M
   
******************/



         ORG 0000H
         JMP START
         ORG 0030H
START:   MOV SP,#60H
         MOV P1,#0FFH
         CLR P3.5           ;設置LED初始狀態
         MOV TMOD,#01H      ;設置定時器/計數器方式
         MOV R0,#10
LOOP:    MOV P1,#07FH
AGAIN:   MOV TH0,#HIGH(65535-50000)      ;設置計數值
         MOV TL0,#LOW(65535-50000)       ;設置計數值
         SETB TR0                      ;啟動定時器0
TF0_0:    JBC TF0,TIMEOUT               ;查詢定時器是否中斷
         JMP TF0_0                      ;連續查詢是否中斷
TIMEOUT: CLR TR0                       ;關閉定時器         
         DJNZ R0,TF0_0               ;重復10次時間定時         
         CPL P3.5                      ;重復10次后,顯示數字加1   
         MOV R0,#10
         JMP LOOP                     ;調至LOOP形成一個新循環
END
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩一级免费观看 | 欧美黑人一区二区三区 | 99精品国产成人一区二区 | 亚洲黄色片免费观看 | 国产成人精品午夜视频免费 | 国产伦一区二区三区四区 | 中文字幕国产 | 国产精品成人69xxx免费视频 | 欧美在线观看一区 | 日韩在线不卡视频 | 日韩精品免费在线观看 | 国产成人精品视频在线观看 | 欧美一区二区三 | 国产一级电影网 | 求个av网址 | 天天在线操 | 国产精品污www一区二区三区 | 国产美女久久久 | 日韩欧美在 | 久久久国产精品 | 亚洲精品二三区 | 精品1区| 欧美一级免费看 | 成人黄视频在线观看 | 91毛片在线观看 | 日日碰狠狠躁久久躁96avv | 日韩免费一级 | 在线中文字幕视频 | 欧美黑人体内she精在线观看 | 日韩欧美国产精品 | 综合久久一区 | 综合国产 | 麻豆av一区二区三区久久 | 国产粉嫩尤物极品99综合精品 | 免费h在线 | 男人天堂视频在线观看 | 午夜激情在线 | www.婷婷 | 欧美在线观看一区 | 一区二区三区在线看 | 中文字幕乱码视频32 |