基于单片机的IC卡智能水表源代码
作者:清华大学 杨家沛
;**************************************************************************
;本系统所用CPU:PIC16F84
;
;采用外接RC经济阻容振荡方式:R=100K C=100P
; 时钟频率约72KHz
; 机器周期约56us
;**************************************************************************
INCLUDE “PIC 84.H” ;PIC84头文件
;**************************************************************************
;液晶显示命令字定义
;**************************************************************************
SYSDIS EQU B'00000000' ;关闭液晶系统振荡和偏振命令字
SYSEN EQU B'00000001' ;打开液晶系统振荡
LCD ON EQU B'00000011' ;打开液晶偏振发生器
BIAS 1 EQU B'00100000' ;液晶显示方式命令字
;**************************************************************************
;PIC I/O口线 输入输出方式定义字
;**************************************************************************
O RB EQU B'01000110' ;RB口输出状态定义字
;输出状态:RB0,RB3,RB4,RB5,RB7均为输出,RB1,RB2,RB6为输入
;
I RB EQU B'01100110' ;RB口输入状态定义字
;输入状态:RB0,RB3,RB4,RB7为输出,RB1,RB2,RB5,RB6为输入
;
0 RA EQU B'11110000' ;RA口定义字
;RA4为输入,低4位均为输出
;**************************************************************************
;各口线作用定义
;**************************************************************************
SWCH1 EQU RA2 ;开阀控制,低电平有效
SWCH2 EQU RB0 ;关阀控制,低电平有效
S VOLT EQU RB7 ;IC卡电源地控制(即控制IC卡座电源),低电平有效
SDA EQU RA4 ;IC卡串行数据线(双向)
SCL EQU RB4 ;IC卡时钟线
S T EQU RB6 ;IC卡插卡检测线.=1 表明IC卡已插入
SPK EQU RB3 ;蜂鸣器控制,高电平蜂鸣
V_MONI EQU RB2 ;电池电压检测线.=1,说明电池电压正常,否则说明过低
WR EQU RA1 ;液晶显示时钟输出,正跳变有效
DATA EQU RA0 ;液晶串行数据输出,=1,为0;=0,为1
CS EQU RA3 ;液晶片选控制,高电平有效(同时控制水脉冲,和IC卡)
W IN EQU RB1 ;0.1m3脉冲输入线(负跳变有效)
F KEY EQU RB5 ;作为防拆表输入线
;**************************************************************************
;IC84通用寄存器定义(共有68个):地址为0CH—4FH
;**************************************************************************
XDATA EQU 0CH ;通用数据暂存单元
CON1 EQU 0DH ;循环条件暂存单元
CON2 EQU 0EH ;循环条件暂存单元
CON3 EQU 0FH ;循环条件暂存单元
CON4 EQU 10H ;循环条件暂存单元
FLAG EQU 11H ;通用标志字节(各位意义见后)
DFLG EQU 12H ;液晶显示标志字节(各位意义见后)
DA1 DSP EQU 13H ;液晶显示高2位(BCD码)
DA2 DSP EQU 14H ;液晶显示低2位(BCD码)
L CON EQU 15H ;循环控制,如果=10 则读卡
SW DL EQU 16H ;关阀延时数
T CON EQU 17H ;FUNCTION KEY TEST COUNT(NO USE)
ST FLG EQU 18H ;W CRC EQU 18H
S0 EQU 2FH ;十六进制->十进制(BCD)中十六进制数暂存
S1 EQU 2EH ;
R0 EQU 13H ;转换后的BCD(4位)暂存
R1 EQU 14H
XDATA1 EQU 1AH
XDATA2 EQU 1BH
CON5 EQU 19H
XDAT EQU 1CH
F ST1 EQU 35H ;机器开始标志单元(正确的开始标志值为55H
F ST2 EQU 36H ; 以及0AAH)
RANDHI EQU 4AH ;加密用随机数高字节
RANDL0 EQU 4BH ;加密用随机数低字节
;**************************************************************************
;下列文件寄存器用来比较用户码及M1码
;**************************************************************************
F VAL EQU 37H ;电磁阀开关标志
WQT H EQU 27H ;以下3单元为用水总量存储单元,此为高字节
WQT M EQU 38H ;中字节
WQT L EQU 39H ;低字节
C RD EQU 3AH ;读卡条件
W HI EQU 3BH ;以下2单元是剩水总量存储单元,此为高字节
W LOW EQU 3CH ;低字节
EFLG EQU 3DH ;写片内EEPROM剩水单元选择标志. 0选EEQ1,
;否则选EEQ2
;**************************************************************************
;读IC卡标志
;**************************************************************************
READ F EQU 3EH ;如不等于0,则说明IC卡未被读过
;**************************************************************************
;下列各信息读自IC卡
;**************************************************************************
USER1 EQU 3FH ;用户码3字节, 高
USER2 EQU 40H ; 中
USER3 EQU 41H ; 低
M1 H EQU 42H ;M1码3字节 高
M1 M EQU 43H ; 中
M1 L EQU 44H ; 低
C RD0 EQU 45H ;原读卡条件
YEAR EQU 46H ;年
MON EQU 47H ;月
DAY EQU 48H ;日
HOUR EQU 49H ;时
M2 H EQU 4AH ;M2码3字节
M2 M EQU 4BH ;
M2 L EQU 4CH ;
WQ H EQU 4DH ;购水总量,高字节
WQ L EQU 4EH ; 低字节
R CRC EQU 4FH ;校验码
;**************************************************************************
;液晶显示标志字节(12H),各位定义如下
404页面网站源码;**************************************************************************
F WQF EQU 0H ;传感脉冲处理否标志位. =1,说明已被处理;否则,未处理
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论