基于51单片机及DS12C887实时时钟的隧道灯控制器.docx
《基于51单片机及DS12C887实时时钟的隧道灯控制器.docx》由会员分享,可在线阅读,更多相关《基于51单片机及DS12C887实时时钟的隧道灯控制器.docx(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、;- ; ; 隧道指示灯控制器程序 ; V1.0 ;软件说明: 本程序使用 STC 单片机控制隧道灯具,最多可以控制高速公路隧道灯 80 个,每 个都可以单独控制 ;此软件是 V1.0 版本 2006-11-01 ;使用 12887 储存时段表和显示方案 ; ; ;- ;联网地址(0-FF) ;地址=0FFH 为广播地址,地址=0 0FEH 为单机地址 LW_ADDR EQU 1 ;- ;变量定义表 ;-寄存器定义- RHOUR DATA 28H ;当前小时寄存器,以 BCD 形式 RMINUTE DATA 29H ;当前分钟寄存器,以 BCD 形式 TMSG DATA 2AH ;当前时段寄存
2、器,以 BCD 形式 TEST_H DATA 2BH ;小时缓冲 TEST_M DATA 2CH ;分钟缓冲 ;- ;-标志位定义- ;ONOFF_FLG EQU 00H ;- ;-地址常量定义- SD_ADDR EQU 0010H ;时段表存储开始地址,外部 RAM MAXTEG EQU 000FH ;最大时段值存储地址,外部 RAM XS_ADDR EQU 0030H ;显示方案表存储开始地址,外部 RAM ;- ;-常量定义- ;本机使用 9600 波特率,SMOD=0 BD_RATE EQU 0FDH ;9600 BOAD_RATE VALUE 11.0592M SDXZ EQU 09
3、H ;时段限制(BCD)SDXZ=SDXZ1+1 ;SDXZ1 EQU 08H ;时段限制(BCD) SDXZ3 EQU 08H SD_NUM EQU 20H ;时段表长度=8 * 4 SD_LONG EQU 04H ;时段表中单个时段结构的长度 XS_NUM EQU 09H ;显示方案表长度 SEND_NUM EQU 34H ;模拟口 1 发送数代换数 JISHU_NUM EQU 35H ;模拟口 1 发送计数器代换数 R0_NUM EQU 36H; ; ;信号引脚定义 DOG EQU P3.5 ; TIME EQU P3.4 ;=0 DS12887 片选有效 XDAT EQU P1.0 X
4、TXD EQU P1.1 XLAT EQU P1.2 STACK EQU 50H ; ;- ;-以下为程序清单- ORG 0000H AJMP START ;主程序 ORG 0023H LJMP S_PORT ;INTERRUPT OF SERIES PORT ;首先对 89C51 初始化 ORG 0030H START: NOP MOV 8EH,#02H ;应用 STC89C53RC 时,禁止内部扩屏 RAM MOV SP,#STACK ;设堆栈首地址 MOV PCON,#00000000B ;SMOD=0 MOV SCON,#01010000B ;1101 0000 (MODE 1 ;RE
5、CEIVE ENABLE) MOV TMOD,#00100000B ;0010 0000 (T1 MODE 2_TIME) MOV TCON,#01000000B ;0100 0000 (TR1=1 ) MOV TL1,#BD_RATE ;T1 IS TIMER ,MAKE BARD_RATE MOV TH1,#BD_RATE MOV IP,#00010000B ;0001 0000 (S-PORT HIGH interrupt) MOV IE,#10010000B ;1001 0000 (S_PORT ENABLE INT) CPL DOG ;初始化各变量寄存器 MOV 20H,#00H ;
6、 清位寻址区 MOV 21H,#00H ; MOV 22H,#00H ; MOV 23H,#00H ; CLR TIME MOV TMSG,#01H ;当前时段 MOV DPTR,#007EH ;判断是否初次运行 MOVX A,DPTR CJNE A,#2CH,CLKSET INC DPTR MOVX A,DPTR CJNE A,#2CH,CLKSET NOP NOP LJMP SFLOG ;应该直到 RDTIME CLKSET: CPL DOG ;对 DS12887 初始化,写操作 MOV DPTR,#000BH ;B 寄存器 SET 位置 1,禁止 12887 运行, MOV A,#0A2
7、H ;设 24 小时制 MOVX DPTR,A MOV DPTR,#0000H ;清秒 CLR A MOVX DPTR,A INC DPTR MOVX DPTR,A INC DPTR ;清分 MOVX DPTR,A INC DPTR ;分闹钟用 03 MOV A,#03H MOVX DPTR,A INC DPTR ;清时 MOV A,#07H MOVX DPTR,A ;7 时 INC DPTR MOV A,#00H MOVX DPTR,A ;时闹钟 00 INC DPTR ;清周 MOV A,#01H ;周一 MOVX DPTR,A INC DPTR ;日 1 MOVX DPTR,A INC
8、DPTR MOV A,#11H ;月 11 MOVX DPTR,A INC DPTR MOV A,#06H ;年 06 MOVX DPTR,A MOV DPTR,#000AH ;以 BCD 码计时,允许报警中断 MOV A,#0A0H ;设为 010 允许保留时间 ,uip 位不应该置位 MOVX DPTR,A MOV DPTR,#000CH ;C 寄存器没有作用 MOVX A,DPTR INC DPTR MOVX A,DPTR ;D 寄存器没有作用 MOV DPTR,#000BH MOV A,#22H ;B 寄存器 SET 位置 0,12887 正常运行, MOVX DPTR,A CPL D
9、OG ; ;将时段方案表装入存储器(12887) LDTB: MOV DPTR,#SD_ADDR ;时段表存储开始地址,外部 RAM MOV R0,DPL MOV R1,DPH MOV DPTR,#TABL2 ;时段表首地址 MOV R5,#SD_NUM ;时段表长度 LOADNUM: CLR A MOVC A,A+DPTR ;查表输入 MOV P2,R1 MOVX R0,A ; INC DPTR LCALL INCR0R1 DJNZ R5,LOADNUM CPL DOG MOV DPTR,#XS_ADDR ;显示方案表存储开始地址,外部 RAM MOV R0,DPL MOV R1,DPH M
10、OV DPTR,#TABL1 ;显示方案表首地址 MOV R5,#XS_NUM ;显示方案表长度 LOADNUMM: CLR A MOVC A,A+DPTR ;查表输入 MOV P2,R1 MOVX R0,A ; INC DPTR LCALL INCR0R1 DJNZ R5,LOADNUMM CPL DOG MOV DPTR,#MAXTEG ;最大时段值存储地址 MOV A,#SDXZ3 ;当前最大时段设为“8“ MOVX DPTR,A ; ; SFLOG: CPL DOG ;不是初次运行 MOV DPTR,#007EH ;置运行标志 MOV A,#2CH MOVX DPTR,A INC DP
11、TR MOVX DPTR,A ;* RDTIME: MOV DPTR,#000AH ;访问 DS12887 MOVX A, DPTR ;读取当前时刻 CPL DOG JBC ACC.7,RDTIME ;当 UIP 为 1,更新数据. 只读,不用清 0 MOV DPTR,#0002H ;当 UIP 为 0,244us 更新一次, MOVX A,DPTR ;时间,日历等在此时可以访问 MOV RMINUTE,A ;UIP READ ONLY, INC DPTR ;置寄存器 B 中 SET 位 1,清 UIP 位 INC DPTR MOVX A,DPTR MOV RHOUR,A CPL DOG ;
12、;- ;判断当前最大时段是多少,存入 12887 MOV R3,#00H LLP1: INC R3 ; CJNE R3,#SDXZ3,PLC1 ; NOP LJMP OUTP1 PLC1: MOV A,R3 MOV R4,A LCALL JSSD ; MOV DPTR,#SD_ADDR ;读取时段表数据 INC DPTR INC DPTR MOVX A,DPTR ; MOV TEST_H,A ; INC DPTR ; MOVX A,DPTR MOV TEST_M,A LCALL DECDPTR ;DPTR=DPTR-1 MOV A,#SD_LONG CLR C ADD A,DPL MOV DP
13、L,A CLR A ADDC A,DPH MOV DPH,A MOVX A,DPTR CJNE A,TEST_H,LLP1 INC DPTR MOVX A,DPTR CJNE A,TEST_M,LLP1 ;小时,分钟相同则认为后面没有新时段 OUTP1: MOV DPTR,#MAXTEG ;最大时段值存储地址 MOV A,R3 LCALL BINBCD ; 其实可以不转都行的 MOVX DPTR,A ;根据当前时刻,判断应该运行第几时段 CKTAB: MOV A,TMSG LCALL BCDBIN MOV R4,A NOP JZ NORGT NOP CJNE A,#SDXZ,THIS3 THI
14、S3: NOP JC NWR NORGT: MOV A,#01H ;大于 10,则重赋值 MOV TMSG,A MOV R4,#01H NWR: LCALL JSSD ;计算时段条地址,R4 为时段值 INC DPTR ;DPTR 存储时段条地址 INC DPTR MOVX A,DPTR MOV R4,A ;THE TABLE HOUR IN R4 INC DPTR MOVX A,DPTR LCALL DECDPTR MOV R5,A ;THE TABLE MINUTE IN R5 MOV A,R4 CJNE A,RHOUR,LL1 MOV A,R5 CJNE A,RMINUTE,LL1 NO
15、P NOP LJMP FOUND LL1: NOP JC BIG MOV A,TMSG ;如果比现时时间大,则将时段减一 CJNE A,#01H,DECR PUSH DPL PUSH DPH MOV DPTR,#MAXTEG MOVX A,DPTR POP DPH POP DPL MOV TMSG,A NOP LJMP FOUND DECR: MOV A,TMSG LCALL BCDBIN DEC A MOV TMSG,A NOP LJMP CKTAB BIG: PUSH DPL PUSH DPH MOV DPTR,#MAXTEG ;THE PRESENT TIME- STAGE IS MAX
16、? MOVX A,DPTR POP DPH POP DPL CJNE A,TMSG,LL2 NOP LJMP FOUND LL2: MOV A,DPL ;GET THE NEXT HOUR ADDRESS ADD A,#SD_LONG MOV DPL,A CLR A ADDC A,DPH MOV DPH,A MOVX A,DPTR ;THE NEXT HOUR IS IN R4 MOV R4,A INC DPTR MOVX A,DPTR ;THE NEXT MINUTE IS IN R5 MOV R5,A MOV A,R4 CJNE A,RHOUR,LL3 MOV A,R5 CJNE A,RM
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 DS12C887 实时 时钟 隧道 控制器
限制150内