📄 086.asm
字号:
;---------------------------------------------------------------------------------------------------------
;修改日志:
;2006/04/18: 主程序中每循环一次都需要配置一下I/O口的输出方式
;2006/04/20: 外部晶振丢失复位使能
;2006/04/21: 调试,去除电机转动
;2006/04/24: 电机转动方向经常配置
;2006/05/17: 根据胡工重布电路板进行修改 1, DCAC指示灯变化
; 2, 键盘稍描线由原来的P5.0~P5.3转为P2.7~P2.4
;---------------------------------------------------------------------------------------------------------
;2006/05/29: 报警档位光带显示在非输液状态都可以处理
; 在保存校正值时都需要校正累计量
;---------------------------------------------------------------------------------------------------------
;2006/06/01: 压力报警值重新确定
;---------------------------------------------------------------------------------------------------------
;2006/06/08: 压力峰值下降时(说明管变软)最大压力峰值也同时更新可避免误报警
; 电池充电达到14.0伏时停止大电流充电,熄灭充电指示灯使用PWM充电
; 输液泵休眠处理的修改,将板电流下降至750uA
; 空瓶监测转4圈无点滴滴下为空瓶报警
; 快注速度显示不显示实时速度
;
;2006/06/10 1000毫升/小时快注启动加快速度为2000滴/分()
;2006/06/13 压力检测峰值锁定重新设计,压力报警情况下按清除报警时处理重修定位最大压力峰值等于最小压力峰值
; 泵运行信号检测(5滴以下速度不检测,5滴以上检测时长2分钟)理想状态按照速度不同而不同时间长度
;2006/06/14 快注有独立的检测累计和计量累计(因为快注时校正系数与正常输液的计量参数不同)
; 实际总累计 = 正常输液累计 + 快注输液累计(累计显示相关,输液结束相关数据都是)
; 快注时额外增加25%的正补差
; 快注前需要判断是否输液量越界
;2006/06/21 语音芯片播放延时增加到10ms,解锁鸣叫音为连续两次锁键音
;2006/06/24 增加管歪检测及报警(压力峰初值很大时)
;2006/07/03 输液速度小于120滴/分的电机力矩控制Moto_up=0,否则Moto_up=1
;2006/07/06 输液泵压力报警AD值重新调整
;2006/07/10 14.0伏以上充电采用定时器2脉冲充电方式
; 名叫延时及按键稍描延时采用定时器模式
;;2006/07/11 快注时电机控制芯片充分复位,管型设置bug消除 (强磁场)
;2006/07/14 切换窗口时窗口循序的重新调换: 滴速->流速->设置量->总累计->管型->校正符号->校正值->滴速->...
; 开机后默认窗口为速度设置(滴速或流速)
;2006/07/15 滴速控制参数段重新设定
;2006/07/20 100滴/分速度以上不降速启动
; 有报警信息需要显示报警信息时恢复当前窗口数据显示,且当窗口处于设置\状态下清除已输入数据位
;2006/07/24 增加点滴计数器工程模式(第3位拨码开关=ON)时每增加一滴为一毫升
;2006/07/25 滴速控制参数超过25%错误报警err9且需要暂停超时报警 长按键加时间 锁键报警err8
;2006/07/31 电池电压13.5~14.0区间去除上升下降沿处理改为直接充电
; 连续超速15圈err9报警
;2006/08/07 漏液报警处理改为:不输液状态下检测到10滴以上点滴为漏液报警
; 增加老化测试时不充电配置模式:拨位开关2 on为老化工作模式
;2006/08/16 对流速控制方式下且校正值不等于零情况下速度控制异常增加处理
;2006/08/17 1,流速控制异常判断条件改为:实际控制频率连续30圈超过初始频率的50% 2,快注无输液控制异常报警
;2006/08/23 1, 针对诸塞时压力上升较陡情况增加判断处理(初值以初始化,无上升沿也算锁定峰值)
; 2, 对压力初始状态为直线情况的初值处理改进: 取该平均值
;2006/08/26 超速报警判断条件改为 80%
;2006/09/06 压力报警判断条件修改: 当压力峰值差没有超过限定时再判断最大压力峰值是否超过4000,如果超过也报警
;---------------------------------------------------------------------------------------------------------; Copyright (C) 2001 CYGNAL INTEGRATED PRODUCTS, INC.; All rights reserved.
;;;; FILE NAME : BLINK.ASM ; TARGET MCU : C8051F020 ; DESCRIPTION : This program illustrates how to disable the watchdog timer,; configure the Crossbar, configure a port and write to a port; I/O pin.;; NOTES: ;;-----------------------------------------------------------------------------$include (c8051f020.inc) ; Include register definition file.
;本程序以6.25主板原理图为基础,构造了软件的基本框架;
;A/D8位变反已改,显示拖尾已改,光带8位全显已改,第二次电路板V1.0;
;已挂上脉率,已修改温度测量除法形式;电机驱动去掉FF字节;
;$include (c8051f020.inc);
;$include (c8051f020.inc);
disp1 equ 30H;
DROPINTERVALTIME equ 31H;de1 equ 31H;
BATCHECHTIME equ 32H ;检测电池间隔时间计时器
BATFLAG equ 33H;
FRONTALSTATUSOFKZ equ 34H ;快注前状态 00 未输液, 01输液中
BITJSQ equ 35H;显示的位计数器,加上光带共有13位显示;当前数码LED灯索引
DISM1 EQU 36H;窗1BCD码四位对应滴速窗口数码管 DISM1为最低位显示
DISM2 EQU 37H;
DISM3 EQU 38H;
DISM4 EQU 39H;
DISM5 EQU 3AH;窗2 窗2BCD码四位对应管型/校准窗口数码管 DISM5为最低位显示(DISM7,DISM8无效)
DISM6 EQU 3BH;
;FLOWRATETYPE EQU 51H ;控制流速类型 00H 滴/分 01H毫升/小时
DISM9 EQU 3EH;窗3 窗2BCD码四位对应累计窗口数码管 DISM9为最低位显示)
DISM10 EQU 3FH;
DISM11 EQU 40H;
DISM12 EQU 41H;
DISM13 EQU 42H;光带
FLICKERTIME EQU 43H ;
KEYC EQU 44H; 键值0FF为无键;
WINDOWS EQU 45H;窗口编号寄存器;
DJBEG EQU 46H;电机启动标志
TWL EQU 47H ;快注标志KUAIZHU
TWH EQU 48H;DRP工作单元,作为PCA2发FFFF延时的计数器,不要初始化
ML EQU 49H;为TWH之二级暂存,(脉率数值);
ZD EQU 4AH;针头型号;
JAZN EQU 4BH;较准误差量(为检测滴液数时间段值);
SUML EQU 4CH;机器输液总累计量低字节; 作为校正后的值(即显示值)
SUMH EQU 4EH;机器输液总累计量高字节
DDS EQU 4FH;点滴分段处理,段号
;HASEN EQU 50H;ml/时 ;50H,51H,为键盘识别占用,暂不做其它用;
;GJBZ EQU 51H;告警标志位,共有八个标志;
;52H;
XSTMPL EQU 53H;任何窗口共用的显示暂存器低位;
XSTMPH EQU 54H;任何窗口共用的显示暂存器高位;
STEP EQU 55H;
MaxPressApexL EQU 56H ;
MaxPressApexH EQU 57H
MinPressApexL EQU 58H ; 作为压力检测峰值-最低值初始值低字节
MinPressApexH EQU 59H ; 作为压力检测峰值-最低值初始值高字节
P1K EQU 5AH;P1口缓存器
ADJSQ EQU 5BH;八路AD计数器
ADTIME EQU 5CH;AD采样间隔计数器(峰值上升次数计数器|峰值下降次数计数器)
NOMALPOWEROFFFLAG EQU 05DH
LCDMM EQU 5EH;23H
FATALERR EQU 5FH ;致命的错误 bit7=1未接电池 bit6=1 未接液滴传感器 bit5=1 空瓶 BIT4=1电机不转 BIT3=1 管歪 BIT2=1 流速控制失败 其他保留
BATCHECKERRTIME EQU 60H ;电池检测错误次数计数器
DDSL EQU 61H;;ADM4
DDSH EQU 62H;;ADM5
HASENL EQU 63H;;ADM6
HASENH EQU 64H;;ADM7
LEDDM EQU 65H; 段码寄存器
FLOWRATETYPE EQU 66H;位码寄存器
KCODE EQU 67H;键代码,由(KEYC)键内码查表得到;
JCQ1 EQU 68H;当前窗口首址寄存器;
FHW EQU 69H;保持下面的延时上长延时电平相同标志,在T1中断中用,有初始化
LEDW2 EQU 6AH;窗口指示及告警灯映射2:2FFFH;
TOTAL EQU 6BH;应输总量
TOTAH EQU 6CH;
NOMOTOSIGNTIME EQU 6EH;无电机信号计时
WBZ EQU 6FH;当前窗口的位标志;0,1,2,3;
POINT EQU 70H;小数点;
DQBIT EQU 71H;
MSEC EQU 72H;毫秒计数器 ;
SEC EQU 73H;
STILLDROPCOUNTER EQU 74H;静态滴液计数器
PApexDECCounter EQU 75H;压力峰值下降次数计数器
TIMBZ1 EQU 76H;物理窗口1计时器;好像是ADC采样时,无用处
TIMBZ2 EQU 77H;物理窗口2计时器;
TIMBZ3 EQU 78H;物理窗口3计时器;机障定时报警计数器,长时间输液没有检测到液滴就报警 500ms级计时器
NORMALPOWEROFF EQU 79H ;正常关机标志
DL1BF EQU 7AH;步进电机延时常数的四个寄存器;
DL2BF EQU 7BH;
;泵转动圈数计数器
PumpRoundCounterL EQU 7CH;
PumpRoundCounterH EQU 7DH;
ADM0L EQU 80H;5DH;AD数据缓存器
ADM0H EQU 81H;
ADM1L EQU 82H;5EH;
ADM1H EQU 83H
ADM2L EQU 84H;5FH;
ADM2H EQU 85H
ADM3L EQU 86H
ADM3H EQU 87H
ADM4L EQU 88H;
ADM4H EQU 89H;60H;
ADM5L EQU 8AH;5DH;AD数据缓存器
ADM5H EQU 8BH;
ADM6L EQU 8CH;5EH;
ADM6H EQU 8DH
ADM7L EQU 8EH;5FH;
ADM7H EQU 8FH
RAM16 EQU 90H;开关S1,S2,S3,X;
RAM21 EQU 91H;开关X,S4,S6,S5;
RAM24 EQU 92H;开关"阻塞,气泡,欠压"
RAM25 EQU 93H;开关X,H1,H2,H3;
RAM26 EQU 94H;开关"X,输完,开门,机障"
RAM27 EQU 95H;开关X,H4,H5,H6
RAM28 EQU 96H;开关X,S15,S16,S17;
RAM29 EQU 97H;开关X,S18,S19,S20;
;---------------------未使用---------------------------------
;MTHL EQU 98H ;本次脉宽寄存器
;MTHH EQU 99H ;
;MT0L EQU 9AH ;T0计数器上一次数值
;MT0H EQU 9BH ;
;------------------------------------------------------
MLT1 EQU 98H;9CH;乘法工作单元;因乘法本间访是接使用的状态,
MLT2 EQU 99H;9DH;故可以放在高128区
MLT3 EQU 9AH;9EH;
MLT4 EQU 9BH;9FH;
KUAIZHU EQU 9CH;0A0H;快注标志
KDDSL EQU 9DH
KDDSH EQU 9EH
KVOTWH EQU 9FH
KVODEL1 EQU 0A0H;
KVODEL2 EQU 0A1H
WARNTIME EQU 0A1H;
; [b7=1: 输完] [b6=1: 暂停]
;
; [b0=1: 滴/分控制 b0=0: 毫升/小时控制 ]
STATUS EQU 0A3H ;机器运行状态字:b7=1 输完,b6=1 暂停,b5=1故障暂停(无计时限),b4=1加油锁键盘,b3=1全部锁定键盘,b2=,b1=1(定量),b0=1(按滴/分控制,b0=0(按ml/小时控制)
OCCL0L EQU 0A4H;
OCCL0H EQU 0A5H;
OCCL1L EQU 0A6H;
OCCL1H EQU 0A7H;
KVOBZ EQU 0A8H;
DSJCQL EQU 0A9H;
DSJCQH EQU 0AAH;
ZDJCQ EQU 0ABH;
LOW10M EQU 0ACH;欠压10分标志
;----------------------------------------------------------
;增加全局变量
;----------------------------------------------------------
SAVENSTEP EQU 0ADH;保存的矫正值
SAVENDSJCQL EQU 0AEH;保存的设定滴速低字节
SAVENDSJCQH EQU 0AFH;保存的设定滴速高字节
SAVENHASENL EQU 0B0H;保存的预置设定流速低字节
SAVENHASENH EQU 0B1H;保存的预置设定流速高字节
SAVENTOTALL EQU 0B2H;保存的预置设定量低字节
SAVENTOTALH EQU 0B3H;保存的预置设定量高字节
STEPSIGN EQU 0B4H;校正值符号
SIGNLEDSTATUS EQU 0B5H;校正值符号显示状态
STEPSIGNTIME EQU 0B6H;校正值符号闪烁定时器
SAVENSTEPSIGN EQU 0B7H;保存的校正值符号
COUNTSUML EQU 0B8H;输液总量低位; 实际检测到的计数值(校正前值)
COUNTSUMH EQU 0B9H;输液总量高位
PAUSETIME EQU 0BAH;暂停输液时间
;许可压力检测标志
CheckPressureEnable EQU 0BBH ;许可压力检测标志
PumpPositionVoltage EQU 0BCH ;泵位置检测脚电平状态。
PUSHKEYTIME EQU 0BDH ;按键时间
SAVENPRESSLEVEL EQU 0BEH ;
ADJUSTPUMPFLAG EQU 0BFH ;因为泵状态变化而调整过电机控制参数标志(5AH)
ADJUSTPUMPDRPRATEL EQU 0C0H ;调整泵位置状态时的泵控制参数低字节
ADJUSTPUMPDRPRATEH EQU 0C1H ;调整泵位置状态时的泵控制参数低字节
PulsChargeMode EQU 0C2H ;脉冲充电模式
;快注模式下的计量累计
FastTransSumL EQU 0C3H ;快注阶段的计量累计低字节
FastTransSumH EQU 0C4H ;快注阶段的计量累计高字节
;快注模式下的检测累计
FastTransCheckSumL EQU 0C5H ;快注阶段的检测累计低字节
FastTransCheckSumH EQU 0C6H ;快注阶段的检测累计高字节
OverPressLimitCount EQU 0C7H ;压力检测超过极限计数器
ChargePulseTime EQU 0C8H ;脉冲充电计时器
TempTimeCounter EQU 0C9H ;零时计时器(50毫秒级)
T10msCounter EQU 0CAH ;10毫秒计时器
ErrorCode EQU 0CBH ;错误代码
DL1BFBak EQU 0CCH ;频率控制参数1备份
DL2BFBak EQU 0CDH ;频率控制参数2备份
BeyondRateCycle EQU 0CEH ;频率控制参数2备份
DATAI EQU 20H;
HSJSQ EQU 21H;滴数寄存器,以针头值为模
WINJCQ EQU 22H;
GZUJCQ EQU 23H;工作寄存器
GZJCQ1 EQU 24H;工作寄存器
;PSECH EQU 25H;
P6K EQU 25H;
TXBUF EQU 26H;
EEPROM0 EQU 27H;
MLTRAM0 EQU 28H;乘法积单元首址四个,应为MLT1即可;此可另用
p5k equ 29h;;EEPROM2 EQU 29H;
p4k EQU 2AH;EEPROM3 EQU 2AH;
;EEPROM4 EQU 2BH;
MSECL EQU 2CH;毫秒计数单元双字
MSECH EQU 2DH;
MTHJSQ EQU 2EH;脉宽累加计数器;
GDTIM EQU 2FH;
TXDE equ p1.4;
;TXRE EQU P1.5;
VSCL EQU P0.3
VSDA EQU P0.2
SLA DATA 1EH ;寻址字节存放单元
;SLAW 寻址字节写
;SLAR 寻址字节读
NUMBYT DATA 1FH; ; 传送字节数存放单元
;MTD EQU 30H ;发送数据缓冲区
;MRD EQU 40H ;接收字节缓冲区
MTHSL EQU 16H;脉宽累加器;(实际意义并非如此。。。只是一些被废弃的含义)
MTHSH EQU 17H;
;-----------------------------未使用的RAM------------------------------------
PMSECL EQU 18H;脉搏上次触发时点,初值为0;
PMSECH EQU 19H;
MLJSQ EQU 1AH;中断中对脉率计数最新加1
PMLJSQ EQU 1BH;上次脉率计数值,主程序判断是否有新的中断;
;------------------------------------------------------------------------------
GJBZ1 EQU 1CH;;b7=1漏液(电机停止时漏液),b6=暂停超时,b5=输完,b4=门,b3=机障,b2=阻塞,b1=气泡,b0=欠压
SLEN EQU 1DH;串通长度;
STIME EQU 1EH;
LEDW1 EQU 1FH;
;-----------------------------------------------------------------------------
;FLASH 存储地址定义
;-----------------------------------------------------------------------------
ADDR_STEP EQU 0000H; 校正值保存位置 长度1
ADDR_ZD EQU 0001H; 针头类型保存位置 长度1
ADDR_SAVENDSJCQ EQU 0004H; 设定滴速保存位置 长度2
ADDR_SAVENHASHEN EQU 0006H; 设定流速保存位置 长度2
ADDR_SAVENTOTAL EQU 0008H; 预设置量保存位置 长度2
ADDR_STEPSIGN EQU 000AH; 校正值符号保存位置 长度1
ADDR_PRESSLEVEL EQU 000BH; 压力报警档位保存位置 长度1
ADDR_NOMALOFF EQU 000CH; 正常关机标志;-----------------------------------------------------------------------------; EQUATES;-----------------------------------------------------------------------------
GREEN_LED equ P1.6 ; Port I/O pin connected to Green LED.
WTV170_P01 equ P3.3;7 ; Port I/O pin connected to WTV170_BUSY P01
WTV170_P02 equ P3.4;6 ; Port I/O pin connected to WTV170_CLK P02
WTV170_P03 equ P3.5 ; Port I/O pin connected to WTV170_DATA P03
WTV170_P04 equ P3.6 ; Port I/O pin connected to WTV170_DATA P03
WTV170_RST equ P3.2;4 ; Port I/O pin connected to WTV170_RESET
AC_Power_LED EQU P2.2;P3.1
DC_Power_LED EQU P2.3;P3.0
;-----------------------------------------------------------------------------; RESET and INTERRUPT VECTORS;-----------------------------------------------------------------------------
; Reset Vector cseg AT 0
ljmp main ;Locate a jump to the start of code at
; the reset vector.ORG 0003H
LJMP HSINT
ORG 000BH;
LJMP TT0;
ORG 0013H
LJMP HSINTEMPTY
ORG 001BH;
LJMP TTT1;
ORG 0023H;
LJMP TXSVE;
ORG 002BH
LJMP TIME2_int
ORG 0033H
LJMP HSINTEMPTY
ORG 003BH
LJMP HSINTEMPTY
ORG 0043H
LJMP HSINTEMPTY
org 04bh;
ljmp pca;
ORG 0053H
LJMP HSINTEMPTY
ORG 005BH
LJMP HSINTEMPTY
ORG 0063H
LJMP HSINTEMPTY
ORG 006BH
LJMP HSINTEMPTY
org 0073H;
LJMP TTT3
ORG 007BH
LJMP HSINTEMPTY
ORG 0083H
LJMP HSINTEMPTY
ORG 008BH
LJMP HSINTEMPTY
ORG 0093H
LJMP HSINTEMPTY
ORG 009BH
LJMP HSINTEMPTY
ORG 00A3H
LJMP HSINTEMPTY
ORG 00ABH
LJMP HSINTEMPTY
;-----------------------------------------------------------------------------;CODE SEGMENT;-----------------------------------------------------------------------------Blink segment CODE
rseg Blink ; Switch to this code segment.
using 0 ; Specify register bank for the following
; program code.main: ; If interrupts were enabled, we would need to explicitly disable ; them so that the 2nd move to WDTCN occurs no more than four clock ; Disable the WDT. (IRQs not enabled at this point.) ; cycles after the first move to WDTCN. ; 设置比较器为非复位源
MOV P74OUT,#01H
mov P4,#00H
MOV P5,#08H
MOV A,#00H
MOV RSTSRC,A
CLR EA;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -