中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁 > 消費電子 > 帶有時間設置和秒顯示的數(shù)字鬧鐘

        帶有時間設置和秒顯示的數(shù)字鬧鐘

        ——
        作者: 時間:2007-10-23 來源:中國單片機資訊網(wǎng) 收藏
        ;*********************************************************
        ;           帶有
        ;  Date :  2006.3.13     12MHZ晶振                                  
        ;  Create by :塵封往事  逸飛     
        ; P3.2設置鍵 P3.3小時調整鍵 P3.5分鐘調整鍵 P1.7定時輸出指示
        ;**************************************************************
        ;*********************************************************
        ;                 變量地址分配
        ;********************************************************* 
        SwDelay             equ  2;       設置按鍵時去抖動時間
        DisplayBuffer       equ  30h;     設置顯示緩沖區(qū)的地址為30h-35h共6個字節(jié)
        BeepVal             equ  36h;     蜂鳴時間長短存儲器地址 
        OneSecondCounter    equ  39h;     設置1秒計數(shù)器的地址,1秒計數(shù)器是用來計數(shù)1秒內計時器的中斷次數(shù)
        Hour                equ  3ah;     設置小時計數(shù)器的地址
        Minute              equ  3bh;     設置分鐘計數(shù)器的地址
        Second              equ  3ch;     設置秒計數(shù)器的地址
        P1Val               equ  3dh;     設置數(shù)碼管位驅動值的地址
        ClockMode           equ  20h.0;   模式(正常走時/鬧時)設置寄存器地址,值為0時正常走時,為1時鬧時設定
        AlarmOnOff          equ  20h.1;   鬧鐘開啟/關閉標志,為0關閉,為1開啟
        AlarmTimeOn         equ  20h.2;   此位為1時表示鬧時時間到
        DispHour            equ  21h;     設置小時顯示寄存器的地址
        DispMinute          equ  22h;     設置分鐘顯示寄存器的地址
        DispSecond          equ  23h;     設置寄存器的地址
        AlarmHour           equ  2eh;     設置鬧時小時計數(shù)器的地址
        AlarmMinute         equ  2fh;     設置鬧時分鐘計數(shù)器的地址
        AlarmSetKey         bit  P3.2;    鬧鐘設置鍵
        MinuteKey           bit  P3.5;    定義分設置鍵
        HourKey             bit  P3.3;    定義小時設置鍵
        RelayOut            equ  P1.7;    定義輸出引腳
        ;**********************************************************************
        ;                     程序開始
        ;**********************************************************************
                 org 00h
                 ajmp   Reset;            程序開始
                 org 0bh     ;            Timer0中斷向量地址
                 ajmp TimeInt;            跳到中斷處理程序
                 org 0020h
        Reset:               ;            以下為初始化程序,為各個變量賦初值
                 mov sp,#70h;
                 setb RelayOut 
          mov OneSecondCounter,#125
                 ;
                 mov Hour,#12;
                 mov Minute,#00;
                 mov Second,#00;       設置上電時時鐘顯示的初值
                 ;
                 mov AlarmHour,#06;
                 mov AlarmMinute,#00;  設置上電時鬧時時間的初值
                 ;
                 clr AlarmOnOff;        上點復位后鬧時功能處于關閉狀態(tài)
                 clr ClockMode;         正常走時模式
                 clr AlarmTimeOn;
                 setb RelayOut;          清鬧時輸出
                 
        ;************************************
        ;   Use Timer 0 Mode 1
        ;   400us interrupt
        ;************************************
                 mov tmod,#00000001b;
                 mov th0,#0E3h;                  
                  mov tl0,#39h;
                 mov ie, #82h;            開全局中斷
                 setb  tr0;               開定時中斷
        ;*****************************************
        ;         以下為主程序
        ;*****************************************
        MainLoop:
                  jb AlarmSetKey,CheckMinuteKey;  鬧時設置鍵按下了嗎?沒有則轉去檢測秒設置鍵
                  ;                      
                  call Delay;
                  jb AlarmSetKey,CheckMinuteKey;  按下的時間超過500ms嗎?
                  setb ClockMode;                 置為鬧時設置模式
                  call AlarmSet;
        CheckMinuteKey:
                  jb MinuteKey,CheckHourKey;      分設置鍵按下了嗎?沒有則轉去檢測小時設置鍵
                  ;                      如按下調用蜂鳴器發(fā)音程序
                  mov a,Minute
                  add a,#1;                       如果按下則將分鐘加一                          十進制調整
                  mov Minute,a;
                  cjne a,#3ch,NotOver1;           到60分鐘了嗎?
                  mov Minute,#0;                  到60分鐘則將分鐘清0
        NotOver1:                                ;以下等待按鍵釋放及防抖動
                  jnb  MinuteKey,$
        CheckHourKey:
                  jb HourKey,CheckAlarm;          小時設置鍵按下了嗎?沒有則轉去鬧時狀態(tài)檢測
                  ;                      如按下調用蜂鳴器發(fā)音程序
                  mov a,Hour
                  add a,#1;                       如果按下則將小時加1
                  mov Hour,a
                  cjne a,#18h,NotOver2
                  mov Hour,#0;                    到24小時則將小時清0
        NotOver2:                                ;以下等待按鍵釋放及防抖動
                  jnb  HourKey,$
        CheckAlarm:          ;
                  jnb AlarmTimeOn,ToReturn
                  call AlarmProcess
        ToReturn:
                  ajmp MainLoop

        ;**********************************************
        ;  定時器Timer0中斷服務程序(此程序每8ms執(zhí)行一次)
        ;********************************************** {{分頁}}
        TimeInt:
                  mov th0,#0E3h;                      重新加載定時參數(shù)
                  mov tl0,#39h;
                  push acc
                  push psw;                           保護累加器及程序狀態(tài)字的內容
                  setb rs0;                           選擇工作寄存器組1,
                  clr  rs1;                           這樣可保護原工作寄存器組(0組)的內容
                  djnz OneSecondCounter,NotoneSecond; 中斷了125次了嗎?即夠1秒了嗎?
                  mov OneSecondCounter,#125;          如夠1秒則重新設置"OneSecondCounter"計數(shù)器
                  call Clock               ;          調用將時鐘內容加1秒的子程序
                  call ConvertoBuffer      ;          調用將時鐘內容轉換到顯示緩沖區(qū)子程序
        NotoneSecond:
                  call ScanDisplay         ;          調用掃描顯示子程序
                  pop  psw
                  pop  acc                 ;          恢復累加器及程序狀態(tài)字的內容
                  reti                     ;          中斷返回
        ;*********************************************
        ;            掃描顯示子程序
        ;*********************************************
        ScanDisplay:
                           MOV   R1,#DisplayBuffer       ;指向顯示數(shù)據(jù)首址
                           MOV   R4,#11111011b      ;掃描控制字初值
                     PLAY: MOV   A,R4          ;掃描字放入A
                           MOV   P2,A          ;從P2口輸出
                           MOV   A,@R1         ;取顯示數(shù)據(jù)到A
                           MOV   DPTR,#TAB     ;取段碼表地址
                           MOVC  A,@A+DPTR     ;查顯示數(shù)據(jù)對應段碼
                           MOV   P0,A          ;段碼放入P1口
                         
             LCALL        Delay

                           INC   R1            ;指向下一地址
                           MOV   A,R4            ;掃描控制字放入A
                           JNB   ACC.7,ENDOUT    ;掃到第六位時結束
                           RL   A               ;A中數(shù)據(jù)循環(huán)左移
                           MOV   R4,A            ;放回R5內
                           AJMP  PLAY            ;跳回PLAY循環(huán)
                   ENDOUT: SETB  P2.7            ;一次顯示結束,P2口復位
                           MOV    P0,#0FFH       ;P0口復位
                           RET                      ;子程序返回
                     TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,7FH,0B7H,0FFH
        ;共陽段碼表          "0""1""2" "3""4""5""6""7" "8""9"".""=""不亮"

        ;****************************************************
        ;            時鐘內容加1秒的子程序
        ;****************************************************
        Clock:
                  mov a,Second;                     將原秒值送入a
                  add a,#1;                         加1秒
                  
                  mov Second,a
                  cjne a,#3cH,NotOverFlow;          夠60秒了嗎?
                  mov Second,#0;                    夠了則將秒值清0
                  ;
                  mov a,Minute
                  add a,#1
                  mov Minute,a;                     分鐘加1
                  cjne a,#3cH,NotOverFlow;          夠60分了嗎?
          &n
        塵埃粒子計數(shù)器相關文章:塵埃粒子計數(shù)器原理
        蜂鳴器相關文章:蜂鳴器原理


        評論


        相關推薦

        技術專區(qū)

        關閉