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

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

51單片機可調數碼鐘

作者:佚名   來源:本站原創   點擊數:  更新時間:2008年10月12日   【字體:


51單片機學習可調數碼鐘!
/******************************************************************
** 文件名:51學習可調數碼鐘!
** 創建人: 謝軍洋
** 日 期: 2008/01/22
** 修改人: 劉力
** 日 期: 2008/01/25
** Copyright (c)  : http://www.zg4o1577.cn會員原創作品
**
** 版 本: 1.2
**------------------------------------------------------------------
**  CPU:MCS-51
** 語言:匯編
** Fosc=12M

<單片機可調數碼鐘仿真圖>
********************************************************************/
/*---------R0自動顯示年月日時長。  (單位:s)*/
/*---------R1自動顯示年時分秒時長。(單位:s)*/
/*---------R6移位標志*/
M  BIT P1.0  //主鍵
U  BIT P1.1  //加1鍵
D  BIT P1.2  //減1鍵
O  BIT P1.6  //OK鍵
R  BIT P1.5  //移位鍵
SS BIT 00H      // M鍵按下標志
SSSS BIT 01H //閃爍標志
SECOND EQU 40H  //秒
MINUTE EQU 41H  //分
HOUR   EQU 42H  //小時
TIANSHU EQU 43H  //天數
TIME   EQU 44H  //天
YUE  EQU 45H  //月
NIAN EQU 46H   //年
SSM  EQU 47H  //閃爍滅記數單元
SSK  EQU 48H  //閃爍開記數單元
ORG 0000H
SJMP START  //轉到主程序
ORG 000BH    //T0中斷
TIME0:PUSH ACC
      MOV TL0,0BFH
   MOV TH0,03CH
   INC R4
   CJNE R4,#122,CHU
   MOV R4,#00
   INC SECOND
   INC R0
   INC R1
   MOV R3,SECOND
   CJNE R0,#4,WU
   CLR F0
   MOV R0,#00
   WU:CJNE R1,#10,WU1
      MOV R1,#00
   SETB F0
  WU1:CJNE R3,#60,CHU
   MOV SECOND,#00
   INC MINUTE
   MOV R3,MINUTE
   CJNE R3,#60,CHU
   MOV MINUTE,#00
   INC HOUR
   MOV R3,HOUR
   CJNE R3,#24,CHU
   MOV HOUR,#00
   INC TIME
   MOV A,TIME
   LCALL TIAN  //天數計算
   CJNE A,TIANSHU,CHU
   MOV TIME,#00
   INC YUE
   MOV R3,YUE  
   CJNE R3,#12,CHU
   MOV YUE,#01
   INC NIAN
   MOV R3,NIAN
   CJNE R3,#100,CHU
   MOV NIAN,#00
CHU: POP ACC
  RETI
//----------------------------主程序
START:
      MOV TMOD,01H
   MOV TL0,0BFH
   MOV TH0,03CH  //可以用kile仿真取值
   SETB TR0   //開T0
   SETB EA
   SETB ET0   //允許T0中斷
   CLR F0   //F0作TIME與年月日轉換顯示(F0=0是顯示TIME,F0=1是顯示年月日)
   MOV SECOND,#00 //秒
   MOV MINUTE,#00 //分
   MOV HOUR,#12  //小時
   MOV TIME,#7    //日期
   MOV YUE,#8     //月份
   MOV NIAN,#7    //年
ANJIANSAOMIAO:
        JNB M,MAIN     //主鍵輸入
        LCALL SHUMASAOMIAO  //數碼管動態掃描
        LJMP ANJIANSAOMIAO  //按鍵掃描

MAIN:
     LCALL DELAY10MS  //按鍵去抖
  JB M,ANJIANSAOMIAO  //如M=1,是抖動返回
  LCALL KEY_0
  SETB SS
  CLR TR0
  CLR F0
WUHUI:
      LCALL SHUMASAOMIAO   //數碼管動態掃描
   JNB O,OK      //確定鍵
   JNB U,JIA      //加一鍵
   JNB D,J1     //減一鍵
   JNB R,YIWEI     //移位鍵
   SJMP WUHUI
J1:LJMP JIAN     //射程太遠只好加長轉移
  
YIWEI:       //移位處理子程序
      LCALL DELAY10MS
   JB R,WUHUI
   LCALL KEY_1
  // JNB R,$  
   INC R6
  XIA:CJNE R6,#3,XIA1
      //LCALL SHUMASAOMIAO//------
      SETB F0   //移位到第三位時顯示年月日(手動)  
XIA1: CJNE R6,#6,HUI
   MOV R6,#00H
   CLR F0   //到第6位時轉顯示時分秒   (手動)
  HUI:LJMP WUHUI  
OK:        //OK鍵處理子程序
   LCALL DELAY10MS
   JB O,WUHUI     //去抖
   SETB TR0     //開定時器
   MOV R6,#00    //OK鍵按下后重新開始移位
   CLR SS
   LJMP ANJIANSAOMIAO    
JIA:     //加一處理子程序
    LCALL DELAY10MS
JB U,WUHUI
LCALL KEY_2
CJNE R6,#0,MINUTEJIA
MOV R3,HOUR     //R5作LED0~3的中轉
CJNE R3,#24,I0    //到十不變返回
MOV HOUR,#00
I0:INC HOUR    //沒有到小時加一
MINUTEJIA:CJNE R6,#1,SECONDJIA
         MOV R3,MINUTE
         CJNE R3,#60,I1
   MOV MINUTE,#00
      I1:INC MINUTE
SECONDJIA:CJNE R6,#2,NIANJIA
         MOV R3,SECOND
         CJNE R3,#60,I2
   MOV SECOND,#00
      I2:INC SECOND
NIANJIA:CJNE R6,#3,YUEJIA
          MOV R3,NIAN
    CJNE R3,#100,I3
    MOV NIAN,#01
       I3:INC NIAN
    
YUEJIA:CJNE R6,#4,TIMEJIA    
          MOV R3,YUE
    CJNE R3,#12,I4
    MOV YUE,#01
    I4:INC YUE
    
TIMEJIA:CJNE R6,#5,GO
          MOV A,TIME
    LCALL TIAN   //根據月份判天數
    CJNE A,TIANSHU,I5
    MOV TIME,#00
    I5:INC TIME                              
       GO:LJMP WUHUI  
JIAN:     //減一處理子程序
  LCALL DELAY10MS
//  JB D,WUHUI    // 射程太遠,不要沒有關系
  LCALL KEY_3
  CJNE R6,#0,MINUTEJIAN
  MOV R3,HOUR
  CJNE R3,#0,D0
  MOV HOUR,#24
  D0:DEC HOUR
MINUTEJIAN:CJNE R6,#1,SECONDJIAN
          MOV R3,MINUTE
    CJNE R3,#0,D1
    MOV MINUTE,#60
       D1:DEC MINUTE
SECONDJIAN:CJNE R6,#2,NIANJIAN
          MOV R3,SECOND
    CJNE R3,#0,D2
    MOV SECOND,#60
       D2:DEC SECOND
NIANJIAN:CJNE R6,#3,YUEJIAN
           MOV R3,NIAN
     CJNE R3,#0,D3
     MOV NIAN,#99
        D3:DEC NIAN
  
YUEJIAN:CJNE R6,#4,TIMEJIAN
          MOV R3,YUE
    CJNE R3,#00,D4
    MOV YUE,#12
    D4:DEC YUE
    
TIMEJIAN:CJNE R6,#5,GO1
          MOV R3,TIME
    CJNE R3,#01,D5
    LCALL TIAN    //根據月份判天數
    MOV TIME,TIANSHU
    D5:DEC TIME          
       GO1:LJMP WUHUI
//--------------顯示
//--------------數碼管動態掃描子程序
SHUMASAOMIAO:
             MOV DPTR,#TABLE
    JNB SS,ZZ
    INC SSK
    MOV R3,SSK
    CJNE R3,#250,YY
    CLR SSK
    CLR SSSS
    INC SSM
    YY:
       MOV R3,SSM
       CJNE R3,#2,ZZ
    MOV SSM,#00
    MOV SSK,#00
    SETB SSSS    
      
          ZZ:MOV A,HOUR
    JNB F0,YUAN  //F0為1時顯示年,為0時顯示小時
    MOV A,NIAN
//--------------///閃爍程序^ SSM -閃爍滅。SSK-閃爍開。

    YUAN:
             MOV B,#10
    DIV AB
          MOVC A,@A+DPTR
             JNB SS,NEXT0   //--
    CJNE R6,#0,NEX0  //--
    SJMP XX0    //--
  NEX0: CJNE R6,#3,NEXT0  //--
  XX0:  JNB SSSS,NEXT0  //--
    MOV A,#00   //--閃爍程序
   NEXT0: MOV P0,A
    CLR P3.0
    LCALL DELAY1MS
    SETB P3.0
    
    MOV A,B
          MOVC A,@A+DPTR
    JNB SS,NEXT  //--
    CJNE R6,#0,NEX
    SJMP XX
  NEX: CJNE R6,#3,NEXT
  XX:  JNB SSSS,NEXT
    MOV A,#00   //-- 閃爍程序
  NEXT:MOV P0,A
    CLR P3.1
    LCALL DELAY1MS
    SETB P3.1
    
    MOV A,#10   //顯示‘-’
    MOVC A,@A+DPTR
    MOV P0,A
    CLR P3.2
    LCALL DELAY1MS
    SETB P3.2
    
    MOV A,MINUTE
    JNB F0,YUAN1 ////F0為1時顯示月,為0時顯示分
    MOV A,YUE
    YUAN1:MOV B,#10
    DIV AB
          MOVC A,@A+DPTR
             JNB SS,NEXT2   //--
    CJNE R6,#1,NEX2  //--
    SJMP XX2    //--
  NEX2: CJNE R6,#4,NEXT2  //--
  XX2:  JNB SSSS,NEXT2  //--
    MOV A,#00   //--閃爍程序
    NEXT2: MOV P0,A
    CLR P3.3
    LCALL DELAY1MS
    SETB P3.3
    MOV A,B
          MOVC A,@A+DPTR
    JNB SS,NEXT1  ///--
    CJNE R6,#1,NEX1  //--
    SJMP XX1    //--
  NEX1: CJNE R6,#4,NEXT1 //--
  XX1: JNB SSSS,NEXT1    //--
       MOV A,#00     //-- --閃爍程序
  NEXT1:MOV P0,A
    CLR P3.4
    LCALL DELAY1MS
    SETB P3.4
    
    MOV A,#10    //顯示‘-’
    MOVC A,@A+DPTR
             MOV P0,A
    CLR P3.5
    LCALL DELAY1MS
    SETB P3.5
    
    MOV A,SECOND
    JNB F0,YUAN2 ////F0為1時顯示日,為0時顯示秒
    MOV A,TIME
    YUAN2:MOV B,#10
    DIV AB
          MOVC A,@A+DPTR
             JNB SS,NEXT4   //---
    CJNE R6,#2,NEX4  //----
    SJMP XX4    //---
  NEX4: CJNE R6,#5,NEXT4//---
  XX4: JNB SSSS,NEXT4  //--
       MOV A,#00  //--閃爍程序
    NEXT4:MOV P0,A
    CLR P3.6
    LCALL DELAY1MS
    SETB P3.6
    
    MOV A,B
          MOVC A,@A+DPTR
    JNB SS,NEXT5
    CJNE R6,#2,NEX5
    SJMP XX5
  NEX5: CJNE R6,#5,NEXT5
  XX5: JNB SSSS,NEXT5
       MOV A,#00
  NEXT5: MOV P0,A
    CLR P3.7
    LCALL DELAY1MS
    SETB P3.7
     RET
//-------------------根據月份查天數
TIAN:MOV R3,YUE
     CJNE R3,#1,YUE2
  MOV TIANSHU,#31
YUE2:CJNE R3,#2,YUE3
     MOV TIANSHU,#28
YUE3:CJNE R3,#3,YUE4
     MOV TIANSHU,#31
YUE4:CJNE R3,#4,YUE5
     MOV TIANSHU,#30          
YUE5:CJNE R3,#5,YUE6
     MOV TIANSHU,#31
YUE6:CJNE R3,#6,YUE7
     MOV TIANSHU,#30
YUE7:CJNE R3,#7,YUE8
     MOV TIANSHU,#31
YUE8:CJNE R3,#8,YUE9
     MOV TIANSHU,#31
YUE9:CJNE R3,#9,YUE10
     MOV TIANSHU,#30
YUE10:CJNE R3,#10,YUE11
      MOV TIANSHU,#31
YUE11:CJNE R3,#11,YUE12
      MOV TIANSHU,#30
YUE12:CJNE R3,#12,OVER
      MOV TIANSHU,#31
OVER:RET
//----------------------
TABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H,00H  //0~9-
KEY_0:JB R,KEY_0CHU
      LCALL SHUMASAOMIAO
      SJMP KEY_0     //移位等待 (用此等待可以去按鍵按下時黑屏)
KEY_0CHU:RET
KEY_1:JB R,KEY_1CHU
      LCALL SHUMASAOMIAO
      SJMP KEY_1     //移位等待
KEY_1CHU:RET
KEY_2:JB U,KEY_2CHU
      LCALL SHUMASAOMIAO
      SJMP KEY_2     //加1等待
KEY_2CHU:RET
KEY_3:JB D,KEY_3CHU
      LCALL SHUMASAOMIAO
      SJMP KEY_3     //減1等待
KEY_3CHU:RET
DELAY10MS:MOV R7,#1     //延時10MS子程序
       L1:NOP
    DJNZ R7,L1
DELAY1MS:RET          
END

此可調數碼鐘用PS仿真已經成功,第一屏顯示時間第2屏顯示年月
 
 

關閉窗口
主站蜘蛛池模板: 欧美精品一二三区 | 久久亚洲春色中文字幕久久久 | av在线播放免费 | 日韩一区二区三区在线 | 欧美日日 | av一级 | 久久这里只有精品首页 | 亚洲综合色丁香婷婷六月图片 | 精品欧美视频 | 在线成人免费av | 国产精品视频一二三区 | 日本不卡一区二区三区在线观看 | www视频在线观看 | 在线观看免费毛片 | 精品伦精品一区二区三区视频 | 欧美一区二区网站 | 国产精品久久久久久久久污网站 | 亚洲欧美精品 | 国产精品久久久久一区二区三区 | 在线免费观看亚洲 | 911影院| 亚洲啊v在线 | 亚洲欧洲一区 | 国产伦精品一区二区 | 91啪亚洲精品 | 一区二区在线免费观看 | 亚洲欧洲在线观看视频 | 国产精品久久久久久久免费大片 | 亚洲精品成人在线 | 97精品国产97久久久久久免费 | 99久久久久久久 | 我要看一级片 | 日韩av免费在线观看 | 精品久久久久久久人人人人传媒 | 欧美日韩高清免费 | 国产一区二区 | 精品欧美一区二区三区免费观看 | 亚洲精品4| 成人在线免费观看 | sese视频在线观看 | www日本在线 |