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

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

智能定時插座程序(終稿)

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

;**************************************************************      
   ;電院  單片機設計
   :智能定時插座 
   ;by LI XIAO JUN
   ;2009-6-4
;**************************************************************
;功能描述:帶鍵盤設置的時間計數器
;功能:實現1分鐘到99小時99分鐘內的定時。可定時關機或定時開機。
;各個鍵的功能:
;S1:小時十位調整
;S2:小時個位調整
;S3;分鐘十位調整
;S4:分鐘各位調整
;可擴展功能:時間顯示
;硬件描述:
;P0口顯示字段。P2.0-2.3共陽數碼管控制端。P1.0-P1.3按鍵
;P3.4繼電器控制端
;**************************************************************
STARTRUN BIT 01H;開始運行標志
KEYOK BIT 00H;有鍵按下標志    
SCOUNT EQU 21H;分計數器
SETVAL EQU 22H;預置分值儲存單元
SCOUNT2 EQU 26H;小時計數器
SETVAL2 EQU 27H;預置小時儲存單元
TCOUNT EQU 24H;;秒計數器
TCOUNTER EQU 250;軟件計數器的計數值,X定時器4MS等于1S
KEYVAL EQU 25H;鍵值儲存單元
DISPBUF EQU 58H;顯示緩沖區
COUNTER EQU 57H;計數器,顯示程序通過它得知現在正在顯示的數碼管
TMRVAR EQU 61536;設定4MS。65536-4000定時器初值
ORG 0000H
JMP START
ORG 0*8+3;INTO中斷入口
RETI
ORG 1*8+3;定時器0中斷入口
LJMP INT_T0
ORG 2*8+3
RETI
ORG 3*8+3
RETI
ORG 4*8+3
RETI
;*******************主程序設定************************************
START:
MOV R7,#60
MOV R4,#60
MOV SP,#5FH
MOV SCOUNT,#0
MOV SCOUNT2,#0
MOV SETVAL,#00;啟動程序默認值為0
MOV SETVAL2,#00
MOV SCOUNT,SETVAL
MOV SCOUNT2,SETVAL2
CLR KEYOK
CLR STARTRUN
CALL INIT_T0
SETB EA
;********************主程序開始***************************************
LOOP:
CALL KEY;調用鍵盤程序
JB KEYOK,KEYPROC;如果有鍵按下,轉鍵盤處理程序
NEXT:
MOV A,SCOUNT;獲取分的數值
MOV B,#10
DIV AB
NEXT1:
MOV DISPBUF+2,A;送顯示緩沖區
MOV DISPBUF+3,B
NEXT2:
MOV A,SCOUNT2;獲取小時的數值
MOV B,#10
DIV AB
NEXT3:
MOV DISPBUF,A
MOV DISPBUF+1,B

JMP LOOP
;*******************鍵值處理程序****************************************
KEYPROC:
MOV A,KEYVAL;取得鍵值
JZ KEY1;如果鍵值是0,轉
DEC A
JZ KEY2;如果鍵值是1,轉
DEC A
JZ KEY3;如果鍵值是2,轉
JMP KEY4;如果鍵值是3,轉
KEY1:;對小時十位進行操作
  INC DISPBUF;將顯示緩沖區的數加1
  MOV A,DISPBUF
  CJNE A,#9,EFT01
  MOV DISPBUF,#0
  SETB STARTRUN
  
EFT01:;鍵值處理
   MOV B,#10
   MUL AB
   ADD A,DISPBUF+1
   MOV SETVAL2,A
   MOV SCOUNT2,SETVAL2
SETB STARTRUN
   JMP LOOP
KEY2:

  INC DISPBUF+1
  MOV A,DISPBUF+1
  CJNE A,#10,EFT02
  MOV DISPBUF+1,#0
  SETB STARTRUN
EFT02:
   MOV A,DISPBUF
   MOV B,#10
   MUL AB
   ADD A,DISPBUF+1
   MOV SETVAL2,A
   MOV SCOUNT2,SETVAL2
SETB STARTRUN
   JMP LOOP

KEY3:
  INC DISPBUF+2
  MOV A,DISPBUF+2
  CJNE A,#6,LEFT0
  MOV A,#0
  SETB STARTRUN
  LEFT0:
  MOV B,#10
  MUL AB
  ADD A,DISPBUF+3
  MOV SETVAL,A
  MOV SCOUNT,SETVAL
SETB STARTRUN
  JMP LOOP
  KEY4:
  INC DISPBUF+3
  MOV A,DISPBUF+3
  CJNE A,#10,REFT0
  MOV DISPBUF+3,#0
  SETB STARTRUN
REFT0:
   MOV A,DISPBUF+2
   MOV B,#10
   MUL AB
   ADD A,DISPBUF+3
   MOV SETVAL,A
   MOV SCOUNT,SETVAL
SETB STARTRUN
   JMP LOOP
;**************鍵盤程序********************************************************
   KEY:
    MOV P1,#0FFH
    CLR KEYOK
    MOV A,P1
    ORL A,#11110000B
    CPL A
    JZ KEY_RET
    CALL DELAY
    MOV A,P1
    ORL A,#11110000B
    CPL A
    JZ KEY_RET
    SETB KEYOK
    JNB ACC.0,KEY_1
    MOV KEYVAL,#0
    JMP KEY_RET
    KEY_1:
      JNB ACC.1,KEY_2
      MOV KEYVAL,#1
      JMP KEY_RET
    KEY_2:
      JNB ACC.2,KEY_3
      MOV KEYVAL,#2
      JMP KEY_RET
    KEY_3:
      
      MOV KEYVAL,#3
      
    
    KEY_RET:
      MOV A,P1
      ORL A,#11110000B
      CPL A
      JNZ KEY_RET
      RET
;****************************延時程序****************************
  DELAY:
      PUSH PSW
      SETB RS0
      MOV R7,#50
D1:  MOV R6,#10
D2:  DJNZ R6,D2
      DJNZ R7,D1
      POP PSW
      RET
;*********************************************************************
  INIT_T0:
      MOV TMOD,#01H
      MOV TH0,#HIGH(TMRVAR)
      MOV TL0,#LOW(TMRVAR)
      SETB ET0;開T0中斷
      SETB TR0;定時器T0開始運行
      RET
;*******************************中斷程序*********************************
  INT_T0:
      PUSH ACC
      PUSH PSW
      MOV TH0,#HIGH(TMRVAR);重新裝入初值
      MOV TL0,#LOW(TMRVAR)
AAA:  INC TCOUNT ;軟件計數器加1
      MOV A,TCOUNT
      CJNE A,#TCOUNTER,INT_N2;判斷是否等于250,即是否計數到1秒。
      CPL P2.6;P2.6接發光二極管,實現每秒閃光
      MOV TCOUNT,#0
      JNB STARTRUN,INT_N2;若等于0,轉移。即是否開始運行
      DJNZ R7,AAA;實現分計數,循環60次。1S乘以60.
      MOV R7,#60
      
      MOV A,SCOUNT2
      CJNE A,#0,BBB;若小時計數器不為0,轉
       JMP EEE
BBB:
      MOV A,SCOUNT
      CJNE A,#0,EEE;若分計數器不為0,轉
      LJMP CCC
      
EEE:  DEC SCOUNT;分計數器減1
       MOV A,SCOUNT                                                
       JNZ INT_N2;若不為0,轉到顯示程序
       MOV A,SCOUNT2
       JNZ CCC
       JMP DDD
CCC:   DEC SCOUNT2;小時計數器減1
       MOV SCOUNT,#59;分計數器裝載59
       JMP  INT_N2;轉顯示程序
;**************************報警,控制繼電器程序**************************************    
DDD:  
       MOV R6,#10
LOOP4: CPL P3.7
       CPL P3.6
MOV R5,#200
LOOP3:LCALL DELAY
     DJNZ R5,LOOP3
     DJNZ R6,LOOP4
LOOP5: CLR P3.4;繼電器工作。輸出低電平。
CLR P3.6
     CLR EA
     LJMP $
    
  
;**************************************顯示程序************************************88
     INT_N2:
     ORL P2,#00001111B;關所有顯示器
     MOV A,Counter;取計數器值
     MOV DPTR,#BitTab;將位碼地址送到DPTR
     MOVC A,@A+DPTR
     ANL P2,A;送位碼
     JNB ACC.1,XIAOSHUDIAN;是否顯示第二位。是則轉,加小數點處理。
     MOV A,#DISPBUF
     ADD A,Counter
     MOV R0,A
     MOV A,@R0
     MOV DPTR,#DISPTAB
     MOVC A,@A+DPTR
     MOV P0,A;送段碼
     LJMP SSS
XIAOSHUDIAN:
     MOV A,#DISPBUF+1
     MOV R0,A
     MOV A,@R0
     MOV DPTR,#DISPTAB
     MOVC A,@A+DPTR
     CLR C
     SUBB A,#80H
     MOV P0,A;送段碼
SSS: INC Counter
     MOV A,Counter
     CJNE A,#4,DISPEXIT;如果計數器為4,讓它回0
     MOV Counter,#0
DISPEXIT:
     POP PSW
     POP ACC
     RETI
   DISPTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;0到9的碼字
   BitTAb: DB 0FEH,0FDH,0FBH,0F7H;位碼
     END


本程序初稿完整版本下載: http://m.zg4o1577.cn/ziliao/file/chazuo1.rar
修改了部分功能后的終稿:http://m.zg4o1577.cn/ziliao/file/chazuo2.txt
效果圖:


希望大家能制作成功.

關閉窗口

相關文章

主站蜘蛛池模板: 日韩视频在线观看免费 | 国产无遮挡又黄又爽又色 | 精品日韩av | 日韩久久网| 欧美美女视频 | 成人在线国产 | 成人毛片100免费观看 | 亚洲激情网站 | 亚洲久热 | 一区二区三区视频在线播放 | 中文字幕欧美在线 | 在线观看国产一区 | 国产精品毛片一区视频播 | 日韩久久综合 | 成人黄色网 | 在线观看的av网站 | 日韩一级在线 | 国产在线观看网站 | 九九九精品视频 | 国产麻豆xxxvideo实拍 | 日韩精品综合 | 一区二区三区免费在线观看 | 国产欧美精品一区二区三区 | 亚洲va视频 | 蜜桃视频一区 | 精品蜜桃一区二区三区 | 午夜欧美 | 四川一级毛毛片 | 日本亚洲欧美 | 成人黄色一级片 | 亚洲黄色天堂 | 午夜天堂在线 | 免费观看毛片 | 91调教视频| 91精品国产成人www | 国产日韩欧美一区二区 | 国产小视频网站 | 精品国产一区二区在线观看 | 亚洲精品www久久久久久广东 | 久久亚洲综合 | 91在线视频 |