基于单片机的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个):地址为0CH4FH
;**************************************************************************
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,说明已被处理;否则,未处理