基于单片机的ic卡智能水表源代码内容摘要:

;此 IC卡已读标志 .=00,说明此卡上数据已读走,否则未读 E2408 EQU 08H ;用户码存储单元(三字节) E240B EQU 0BH ; M1码存储单元(三字节) E240E EQU 0EH ;原读卡条件存储单元 E240F EQU 0FH ;年,月,日,时(各一字节) E2413 EQU 13H ; M2码存储单元(三字节) E2416 EQU 16H ; 剩水(购水)总量存储单元,高字节在先,低字节在后 E2418 EQU 18H ; CRC校验字节存储单元 LIST F=INHX8M, P=16F84, R=HEX 0RG 0 B START ;复位后从 START处开始执行程序 ; ************************************************************************** ;以下程序:用于处理。 处理的事务有: 1) 剩水总数减 1,并写入 EEPROM; 2) 用水总数加 1,并写入 EEPROM相应单元; 3) 根据条件设置剩水不多了等标志位 C LOW; 4) 设置阀门状态正确与否标志单元: EEPROM内的 EE VAL, RAM内的 F VAL ; 0CCH表示出错。 ; ************************************************************************** WQ 11 BSF FLAG, SW OPEN ;置位阀已开标志位 SW OPEN( 1) MOVLW EE VAL MOVWF EEADR MOVLW 0CCH ; 写阀门状态出错标志字 0CCH(该关时未关)到 EE VAL CALL EE WR B WQ ED ; 转 将剩水总数 W HI, W LOW(十六进 制)转换成 BCD码 WQ 13 BCF DFLG, F WQF ;清处理过传感脉冲标志位 F WQF B WQ ED ; 转 将剩水总数 W HI, W LOW(十六进制)转换成 BCD码 ;以下处理。 注:负跳变有效,其他忽略。 WQ 1 BTFSS FLAG, F WQ ;由 F WQ判干簧传感开关闭合否。 B WQ 13 ; NO( =0) ,说明没有闭合,则转 WQ 13 BTFSC DFLG, F WQF ; YES,则继续由 F WQF判(从开 闭的下跳变)次脉 ;冲已被处理否。 B WQ ED ; YES( =1),说明此脉冲已处理过。 BSF DFLG, F WQF ; NO,则首先置位脉冲已处理标志位 F WQF CALL RD WQ ;读取 EEPROM中剩水总数到 W HI, W LOW单元 MOVF W HI, W I0RWF W LOW, W ;判剩水为 0否。 SKPNZ ; NO,则继续 B WQ 11 YES,则出错处理( WQ 11) DECF W LOW, SAME ;从 W HI, W LOW中减 1(即用掉了 ) INCF W LOW, W ; SKPZ B WQ 14 DECF W HI, SAME ;以下程序首先读取 EEPROM中用水总量单元 EE W L, EE W M, EE W H, ;加 1后回存,并存入 RAM中用水总量单元 WQF L, WQF M, WQF H WQ 14 MOVLW EE W L CALL EE RD MOVWF WQT L INCF WQT L, SAME SKPZ B WQ 12 MOVLW EE W M CALL EE RD MOVWF WQT M INCF WQT M, SAME SKPZ B WQ 12 MOVLW EE W H CALL EE RD MOVWF WQT H INCF WQT H, SAME WQ 12 MOVLW EE W H MOVWF EEADR MOVF WQT H, W CALL EE WR INCF EEADR, SAME MOVF WQT M, W CALL EE WR INCF EEADR, SAME MOVF WQT L, W CALL EE WR CALL WR WQ ;将用水总量回存 EEPROM BTFSS FLAG, C LOW ;由 C LOW判剩水总量过低否。 B WQ ED ; NO 转 将剩水处于 W HI, W LOW(十六进制)转换成 BCD 码 MOVF W LOW, W ; YES,则判剩水处于哪个告警档( 3m3,2m3,1m3) XORLW 1EH ; 1EH=30( 因 3/=30,即 3m3) SKPNZ ;不是 3m3档,转判是 2m3档否 BSF FLAG, C LOW 1 ;是 3m3档,则设置关阀告警标志 C LOW 1 MOVF W LOW, W X0RLW 14H ; 14H=20( 2/=20) SKPNZ BSF FLAG, C LOW 1 MOVF W LOW, W X0RLW 0AH ; 0AH=10( 1/=1。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。