 
BITCNT EQU 30H
BYTECNT EQU 31H
COMMAND EQU 32H
RCUDAT EQU 33H ; 定义1302 读出地址
XMTDAT EQU 3BH ; 定义1302 写入地址
IO_DATA BIT P1.4 ; 定义1302数据输入/输出端
SCLK BIT P1.3 ; 定义1302串行时钟
RST BIT P1.5 ; 定义1302复位
SCL BIT P1.6 ; 定义24c02串行时钟
SDA BIT P1.7 ; 定义24c02串行数据
XSJ BIT P3.2 ; 定义显示开关键
GNJ BIT P3.3 ; 定义功能键
JYJ BIT P3.4 ; 定义加1键
GM BIT P3.5 ; 定义光敏电阻输入端
TS2 BIT P1.0 ; 定义调时钟指示发光二极管
TGLD BIT P1.1 ;定义调关路灯指示发光二极管
TKLD BIT P1.2 ;定义调开路灯指示发光二极管
ORG 0000H
AJMP MAIN ;主程序入口地址
ORG 000BH
AJMP T0INT ;T0中断入口地址
ORG 001BH
AJMP T1INT ;T1中断入口地址
ORG 0030H
MAIN: MOV TMOD,#11H ;设置定时器T0,T1工作于模式1
SETB 30H
CLR 31H
MOV 73H,#0 ; 功能键标志位
MOV 72H,#0 ; 闪烁标志位
CLR 32H
CLR 33H ; 闪烁标志位
MOV 70H,#0
MOV TH0,#0D8H
MOV TL0,#0F0H
MOV TH1,#0D8H
MOV TL1,#0F0H ; 定时10ms初值
MOV R3 ,#0AIH
MOV R4 ,#00H
MOV R1 ,#76H
MOV R7 ,#04H ; 读出24c02操作
LCALL EEPR
LCALL OSC_ENABLE ; 初始化1302时钟启动操作
LCALL WRIT_ENABLE ; 初始化1302允许数据输入
LCALL R_MANY ; 调1302多字节读出程序
SETB TR0
KGXS: LCALL R_MANY
*******按键扫描程序*******
JB XSJ ,XSBZ
LCALL YS10MS
JB XSJ, XSBZ ; 判断显示开关键
CPL 30H ; 显示标志位
MOV 7BH ,75H
MOV 7AH ,74H
LCALL XS
XSBZ: JB30H ,PDGX ; 判断标志位
SETB TR1
JB GNJ ,PDGX ; 判断功能键
LCALL YS10MS
JB GNJ , PDGX
INC 73H ; 功能键标志位加1
MOV A , #1 , POTS; ; 调时钟时
CLR TSZ
JB JYJ , PDGX
LCALL TS10MS
JB JYJ , PDGX ; 加一键
INC 75H ;1302 ; 1302时加一
MOV A , 75H
CJNE A , #2 , PDTS
MOV 75H ,#0 ; 判断是否调到24时
PDTS: CJNE A , #2 , POTF
JB JYJ , PDTF
LCALL YS10MS
JB JYJ , PDTF
INC 74H ; 1302分加一
MOV A , 74H
CJNE A , #60 ,PDTF
MOV 74H ,#0
PDTF: CJNE A , #3 ,PDGS
SETB TSZ
CLR TGLD
LCALL W_MANY ; 存1302时、分
JB JYJ , PDGS
LCALL YS 10MS
JB JYJ , PDGS
INC 79H ; 关路灯时加一
MOV A , #24 , PDGS
MOV 79H ,#0
链接:https://pan.baidu.com/s/1zaqp65Amts2Z8903rwBLpA 提取码:5jcy
|