收藏 分销(赏)

灯光喷雾控制器设计.doc

上传人:xrp****65 文档编号:6117961 上传时间:2024-11-28 格式:DOC 页数:12 大小:46KB 下载积分:10 金币
下载 相关 举报
灯光喷雾控制器设计.doc_第1页
第1页 / 共12页
灯光喷雾控制器设计.doc_第2页
第2页 / 共12页


点击查看更多>>
资源描述
EEPROM EQU 0A2H       ;0A0H 为8563地址 BITCNT DATA 30H        ;数据位计数器 BYTECNT DATA 31H        ;发送或接收的字节个数 SLVADR DATA 32H        ;=0A0H 为8563地址 SUBADR DATA 33H        ;被控器单元地址 RCVDAT DATA 34H        ;接收数据缓冲器首址8563首址 XMTDAT DATA 44H        ;发送数据缓冲器首址 SDA     BIT P2.6       ;数据线 SCL     BIT P2.7       ;时钟线 B0      BIT P0.5 B1      BIT P0.6 B2      BIT P0.7 CLK     BIT P3.4 DIN     BIT P3.5 ACK     BIT 73H         ORG 00H         AJMP MAIN         ORG 013H         LJMP T0SUB         ORG 30H MAIN:   MOV IE,#84H       ;开外部中断1         MOV IP,#04H       ;外部中断1优先         MOV TCON,#00H     ;低电平方式         LCALL STIT         ;跳转到启动时钟设置和报警中断子程序        START1: JNB B0 DEBUG0     ;查询是否有调整时间按钮按下 S0:   LCALL DSUB0        ;读出并显示当前时间         AJMP START1 ;---------------------------------------------- ;读子程序      R:    MOV SLVADR,#EEPROM        MOV BYTECNT,55H        MOV SUBADR, 56H MA0: LCALL RCVDATA        JB   F0,MA0        RET ;---------------------------------------------- ;写子程序 W:      MOV SLVADR,#EEPROM         MOV BYTECNT,57H         MOV SUBADR, 58H    MA1: LCALL SENTBYTE         JB   F0,MA1         RET    ;---------------------------------------------- DSUB0: MOV 55H,#02H       ;读两个时间信息        MOV 56H,#03H       ;取读时间的首字节地址        LCALL R             ;调用读子程序        MOV R7,34H         ;将分钟的信息放入R7        MOV R6,35H         ;将小时的信息放入R6        LCALL DISPLAY       ;调用显示时间子程序        RET ;---------------------------------------------- DEBUG0:LCALL DELAY1        ;调用延时子程序,消抖作用        JB   B0,START1      ;判断是否为外界干扰        JNB B0,$           ;判断按键是否弹起 DEBUG1:JNB   B1 MINI       ;判断调节分钟的按钮是否按下,是则跳到分钟子程序 M1 : JNB   B2 HOUR       ;判断调节小时的按钮是否按下,是则跳到小时子程序        JNB   B0 RETU       ;判断时间是否调整好,是则跳到返回子程序        LCALL DSUB0        AJMP DEBUG1        RETU: LCALL DELAY1        JB   B0,M1         JNB B0,$         AJMP S0         MINI: LCALL DELAY1         ;调用延时子程序,消抖作用        JB   B1,M1           ;判断是否为外界干扰        JNB B1,$            ;判断按键是否弹起        CJNE R7,#59 ,MINI0   ;判断分钟是否到59,若没有则跳转到MINI0        MOV   R7,#00         ;59后,让分钟归零 MIN: MOV   44H,R7         ;将调整后的分钟放入R7        MOV   57H,#02H       ;调用写子程序        MOV   58H,#03H        LCALL W        RET        MINI0:INC R7       AJMP MIN       HOUR: LCALL DELAY1        ;调用延时子程序,消抖作用       JB   B2,M1           ;判断是否为外界干扰       JNB B2,$            ;判断按键是否弹起       CJNE R6,#23,HOUR0    ;判断小时是否到23,若没有则跳转到HOUR0       MOV R6,#00          ;23后,让小时归零 HOU: MOV   44H,R6         ;调用写子程序        MOV   57H,#02H        MOV   58H,#04H        LCALL W        RET        HOUR0: INC R6        AJMP HOU    ;----------------------------------------------     ;启动时钟     ;设置报警中断 STIT: MOV 55H,#02H         MOV 56H,#00H         LCALL R             MOV A,34H         ANL A,#00H      ;启动时钟         MOV 44H,A         MOV A,35H         ORL A,#02H      ;设置报警中断         MOV 45H,A         MOV 57H,#02H         MOV 58H,#00H        LCALL W         MOV 44H,#10H     ;让8563在每小时的10分钟时产生报警并在/INT端产生一个中断给8051          MOV 57H,#00H         MOV 58H,#09H        LCALL W         RET ;----------------------------------------------      ;清除AF,并判断是否到时间 T0SUB: MOV 55H,#01H         MOV 56H,#01H         LCALL R         ;中断配置         MOV A,34H         ANL A,#17H        ;设置成AF=0,但保持其他位不变         MOV 44H,A         MOV 57H,#01H      ;写一个信息         MOV 58H,#01H      ;取控制字节地址         LCALL W            ;调用写子程序         MMOV 55H,#02H      ;读两个时间信息         MOV 56H,#03H       ;取分钟字节地址         LCALL R            ;调用读子程序         MOV A,34H         ;取分钟信息         ANL A,#7FH        ;屏蔽无效位         MOV 34H,A         MOV A,35H         ;取小时信息         ANL A,#3FH        ;屏蔽无效位         MOV 35H,A         LCALL T1           ;调用子程序1,用以判断时间08:00是否到         LCALL T2           ;调用子程序2,用以判断时间08:10是否到         LCALL T3           ;调用子程序3,用以判断时间12:00是否到         LCALL T4           ;调用子程序4,用以判断时间12:10是否到         LCALL T5           ;调用子程序5,用以判断时间14:00是否到         LCALL T6           ;调用子程序6,用以判断时间14:10是否到         LCALL T7           ;调用子程序7,用以判断时间16:00是否到         LCALL T8           ;调用子程序8,用以判断时间16:10是否到         LCALL T9           ;调用子程序9,用以判断时间18:30是否到         LCALL T10          ;调用子程序10,用以判断时间18:40是否到         RETI ;---------------------------------------------- ;子程序1,用以判断时间08:00是否到,是则跳转到子程序DISPLAY0 ;启动六个灯光和启动1K的电机 T1:   MOV A,34H         XRL A,#00H         JNZ RE1         MOV A,35H         XRL A,#08H         JNZ RE1         LCALL DISPLAY0    RE1: RET ;---------------------------------------------- ; 子程序2,用以判断时间08:10是否到 ,是则跳转到子程序DISPLAY1 ;关断灯和1K的电机    T2: MOV A,34H         XRL A,#10H         JNZ RE2         MOV A,35H         XRL A,#08H         JNZ RE2         LCALL DISPLAY1    RE2: RET ;---------------------------------------------- ;子程序3,用以判断时间12:00是否到,是则跳转到子程序DISPLAY4 ;启动六个灯光和同时启动三个电机    T3: MOV A,34H         XRL A,#00H         JNZ RE3         MOV A,35H         XRL A,#12H         JNZ RE3         LCALL DISPLAY4    RE3: RET ;---------------------------------------------- ;子程序4,用以判断时间12:10是否到,是则跳转到子程序DISPLAY5 ;关断六个灯光和三个电机    T4: MOV A,34H         XRL A,#10H         JNZ RE4         MOV A,35H         XRL A,#12H         JNZ RE4         LCALL DISPLAY5    RE4: RET ;---------------------------------------------- ;子程序5,用以判断时间14:00是否到,是则跳转到子程序DISPLAY2 ;启动六个灯光和启动一个2K电机    T5: MOV A,34H         XRL A,#00H         JNZ RE5         MOV A,35H         XRL A,#14H         JNZ RE5         LCALL DISPLAY2    RE5: RET ;---------------------------------------------- ;子程序6,用以判断时间14:10是否到,是则跳转到子程序DISPLAY3 ;关断六个灯光和启动一个2K电机    T6: MOV A,34H         XRL A,#10H         JNZ RE6         MOV A,35H         XRL A,#14H         JNZ RE6         LCALL DISPLAY3    RE6: RET ;---------------------------------------------- ;子程序7,用以判断时间16:00是否到,是则跳转到子程序DISPLAY2 ;启动六个灯光和启动一个2K电机     T7: MOV A,34H         XRL A,#00H         JNZ RE7         MOV A,35H         XRL A,#16H         JNZ RE7         LCALL DISPLAY2    RE7: RET ;---------------------------------------------- ;子程序8,用以判断时间14:10是否到,是则跳转到子程序DISPLAY3 ;关断六个灯光和启动一个2K电机    T8: MOV A,34H         XRL A,#10H         JNZ RE8         MOV A,35H         XRL A,#16H         JNZ RE8         LCALL DISPLAY3    RE8: RET ;---------------------------------------------- ;子程序9,用以判断时间08:00是否到,是则跳转到子程序DISPLAY0 ;启动六个灯光和启动1K的电机 T9:   MOV A,34H         XRL A,#30H         JNZ RE9         MOV A,35H         XRL A,#18H         JNZ RE9         LCALL DISPLAY0    RE9: RET ;---------------------------------------------- ; 子程序10,用以判断时间08:10是否到 ,是则跳转到子程序DISPLAY1 ;关断灯和1K的电机 T10: MOV A,34H         XRL A,#40H         JNZ RE10         MOV A,35H         XRL A,#18H         JNZ RE10         LCALL DISPLAY1    RE10: RET ;---------------------------------------------- DISPLAY0: CLR P1.0     ;启动六个灯光           CLR P1.3     ;启动1K的电机            RET DISPLAY1: SETB P1.0    ;关断灯           SETB P1.3    ; 段断1K的电机            RET DISPLAY2: CLR P1.0       ;启动六个灯光           CLR P1.1     ;启动一个2K的电机 DISPLAY3: SETB P1.0     ; 关断灯           SETB P1.1     ; 段断2K的电机           RET DISPLAY4: CLR P1.0    ;同时启动三个的电机           CLR P1.1      ;启动六个灯光           CLR P1.2           CLR P1.3            RET DISPLAY5: SETB P1.0    ; 关断灯           SETB P1.1    ; 同时关断三个的电机           SETB P1.2              SETB P1.3               RET ;----------------------------------------------          ;----------I2C BUS------------------------         ; -    发送数据程序 SENDDATA: LCALL START            MOV A,SLVADR            LCALL SENTBYTE            JB   F0,SENDRETURN            MOV A,SUBADR            LCALL SENTBYTE            JB   F0,SENDRETURN            MOV R0,#XMTDAT SENTNEXT: MOV A,@R0            LCALL SENTBYTE            JB   F0,SENDRETURN            INC R0            DJNZ BYTECNT,SENTNEXT            ACALL STOP DELAY10: MOV R7,#30H D1:       MOV R6,#34H D2:       DJNZ R6,D2            DJNZ R7,D1 SENDRETURN: RET       ;---------------------------------       ;接收数据程序       ;--------------------------------- RCVDATA:   ACALL START            MOV A,SLVADR            ACALL SENTBYTE            JB   F0,RCVRETURN            MOV A,SUBADR            ACALL SENTBYTE            JB   F0,RCVRETURN            ACALL START            MOV A,SLVADR            SETB ACC.0            ACALL SENTBYTE            JB   F0,RCVRETURN            CLR ACK            MOV R0,#RCVDAT            DJNZ BYTECNT,RCVNEXT            SJMP RCVLAST RCVNEXT: ACALL RCVBYTE            MOV   @R0,A            INC R0            DJNZ BYTECNT,RCVNEXT RCVLAST: SETB ACK            ACALL RCVBYTE            MOV   @R0,A            ACALL STOP RCVRETURN: RET    ;----------------------    ;SUBPROGRAM    ;------------------------    ;NAME:START 起始条件    ;-------------------------- START:    SETB SDA            NOP            nop            nop            SETB SCL            NOP            NOP            NOP            NOP            NOP            CLR SDA            NOP            NOP            NOP            NOP            NOP            CLR SCL            RET    ;------------------------------    ;NAME:STOP 停止条件    ;------------------------------- STOP:      CLR   SDA            NOP            nop            nop            nop            SETB SCL            NOP            NOP            NOP            NOP            NOP            SETB   SDA            NOP            NOP            NOP            NOP            RET     ;--------------------------------     ;NAME:SENTBYTE 字节数据发送子程序     ;-------------------------------- SENTBYTE:            MOV   BITCNT,#08H SENTB:            RLC    A            JC     SENT1            CLR    SDA            SJMP   SENT SENT1:            SETB    SDA            NOP SENT:      nop            NOP            SETB    SCL            NOP            nop            NOP            NOP            NOP            NOP            CLR     SCL            DJNZ    BITCNT,SENTB            NOP            NOP            nop            SETB   SDA            NOP            NOP            nop            SETB   SCL            NOP            NOP            nop            CLR    F0            JNB    SDA,ACKEND            SETB   F0 ACKEND:    nop            NOP            CLR    SCL            nop            nop            RET       ;--------------------       ;NAME:RCVBYTE 字节数据接收子程序       ;-------------------- RCVBYTE:            SETB SDA            MOV   BITCNT,#08H RCV:       nop            NOP            nop            CLR   SCL            NOP            nop            NOP            NOP            NOP            SETB SCL            NOP            NOP            nop            CLR   C            JNB   SDA,RCV0            SETB C RCV0:            RLC   A            NOP            NOP            nop            DJNZ BITCNT,RCV            CLR   SCL            NOP            NOP            NOP            CLR   SDA            JNB   ACK,SENTACKB            SETB SDA SENTACKB: nop            NOP            NOP            SETB SCL            NOP            nop            nop            NOP            NOP            CLR   SCL            CLR   ACK            RET ;---------------------------------------------- ;显示小时和分钟子程序 DISPLAY:MOV   R1,#2          MOV   R0,34H LOOP0: MOV   A,@R0          MOV   B,#10          DIV   AB          MOV   40H,A          MOV   41H,B          MOV   A,41H          MOV   DPTR,#TABLE          MOVC A,@A+DPTR          MOV   R2,#08H LOOP1: RLC   A          MOV   DIN,C          CLR   CLK          NOP          SETB CLK          DJNZ R2,LOOP1          MOV   A,40H          MOV   DPTR,#TABLE          MOVC A,@A+DPTR          MOV   R2,#08H LOOP2: RLC   A          MOV   DIN,C          CLR   CLK          NOP          SETB CLK          DJNZ R2,LOOP2          INC   R0          DJNZ R1,LOOP0          RET DELAY1: MOV   R3,#10      ;延时10秒子程序 LOOP5: MOV   R4,#100 LOOP2: NOP          NOP          NOP          DJNZ R4,LOOP2          DJNZ R3,LOOP5          RET ;---------------------------------------------- TABLE: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H         DB 090H,088H,083H,0C6H,0A1H,086H,08EH,0FFH         END
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 环境建筑 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服