;======================================================
;****SY通信电缆缺陷检测项目程序*多点喷射程序****
;======================================================
R0==0x00
R1_TCC==0x01 ;TCC计数器
R3==0x03 ;状态寄存器: 7 6 5 4 3 2 1 0
; CMPOUT PS1 PS0 T P Z DC C
C==0 ;进位标志
Z==2 ;零标志
R4==0x04
PORT5==0X05 ;I/O口寄存器
PORT6==0X06
IOC50==0X5 ;I/O口控制寄存器
IOC60==0X6
Flag_Save==0x2E ; 7 6 5 4 3 2 1 0
;save_E
save_E==7 ;存储标志,当该标志置1时,存储当前显示的电缆缺陷数
Flag==0X7 ; 7 6 5 4 3 2 1 0
; f_INT7 f_INT6 f_INT5 f_INT4 f_INT3 f_INT2 f_INT1
f_INT7==7
f_INT6==6 ;第六个INT正处理中的标致,置1有效
f_INT5==5
f_INT4==4
f_INT3==3
f_INT2==2
f_INT1==1
Inject==5 ;PORT5.5是喷射信号输出口,置位表示喷射
Found_Num==0X8 ;发现缺陷次数寄存器
Found_Num_LED3==0X0B;发现缺陷计数器的百位存放寄存器
LED3temp==0x0D ;BCD子程序用
RF==0x0F ;中断状态寄存器
flag_TCIF==0;RF中的TCC溢出标志
flag_EXIF==2;RF中的外部INT中断标志
Temp==0x10 ;校正数据暂存器或计算中间结果暂存器
NUM==0x11 ;计数器
NUM2==0x12 ;计数器2
LED_Value2==0x2D ;当前显示值寄存器高位
LED_Value1==0x13 ;当前显示值寄存器低位
LED3==0x14 ;百位显示缓冲区
LED2==0x15 ;十位显示缓冲区
LED1==0x16 ;个位显示缓冲区
Inject_beforeH==0x2B ;存放喷射前等待脉冲数高字节位
Inject_before==0x17 ;存放喷射前等待脉冲数低字节位
Inject_after==0x18 ;存放喷射后持续脉冲数
cycle==0x19 ;循环记数寄存器
INT_delay==0x1A ;INT中断延迟开放寄存器
Inject_beforeH1==0x2A
Inject_before1==0x1B ;第1个故障处理子程序使用参数
Inject_after1==0x1C ;第1个故障处理子程序使用参数
Inject_beforeH2==0x29
Inject_before2==0x1D ;第2个故障处理子程序使用参数
Inject_after2==0x1E ;第2个故障处理子程序使用参数
Inject_beforeH3==0x33 ;注意:是RAM1区的寄存器
Inject_before3==0x1F ;第3个
Inject_after3==0x20 ;第3个
Inject_beforeH4==0x34 ;注意:是RAM1区的寄存器
Inject_before4==0x21 ;第4个
Inject_after4==0x22 ;第4个
Inject_beforeH5==0x35 ;注意:是RAM1区的寄存器
Inject_before5==0x23 ;第5个
Inject_after5==0x24 ;第5个
Inject_beforeH6==0x36 ;注意:是RAM1区的寄存器
Inject_before6==0x25 ;第6个
Inject_after6==0x26 ;第6个
Inject_beforeH7==0x37 ;注意:是RAM1区的寄存器
Inject_before7==0x27 ;第7个
Inject_after7==0x28 ;第7个
;Inject_beforeH2==0x29 ;在用,见前面使用的伪指令
;Inject_beforeH1==0x2A ;在用,见前面使用的伪指令
;Inject_beforeH==0x2B ;在用,见前面使用的伪指令
Num_injecting ==0x2C ;处于喷射状态的故障,置1有效
; 7 6 5 4 3 2 1 0
;Inject7 Inject6 ....................Inject1
Inject7==7
Inject6==6
Inject5==5
Inject4==4
Inject3==3
Inject2==2
Inject1==1
;LED_Value2==0x2D ;在用,见前面使用的伪指令
;Flag_save==0x2E ;在用,见前面使用的伪指令
POP_A==0x2F ;A的堆栈
POP_R3==0x30 ;R3的堆栈
/*******************************************************/
LED3_select==3 ;百位选输出口PORT5.3
LED2_select==2 ;十位选输出口PORT5.2
LED1_select==1 ;个位选输出口PORT5.1
KEY_Set1==3 ;PORT6.3
KEY_Set2==4 ;PORT6.4
KEY3_SUB1==5 ;PORT6.5
KEY4_ADD10==6 ;PORT6.6
KEY_CLR==6 ;PORT6.6
/******************************************************/
R24C02data==0x31 ;24C02数据缓存器
R24C02DI==0x32 ;24C02地址缓存器
ROUT==0x33
SCL==6
SDA==7
/***24c02内部的address********/
Found_Num_24c02==0xB1
Found_LED3_24c02==0xC2
beforeH1_24c02==0xA0
beforeH2_24c02==0xB0
beforeH3_24c02==0xA5
beforeH4_24c02==0xB5
before1_24c02==0x10
before2_24c02==0x20
before3_24c02==0x30
before4_24c02==0x40
after1_24c02==0x1A
after2_24c02==0x2A
after3_24c02==0x3A
after4_24c02==0x4A
/******************显示段码存放地址********************/
CODE0==0x34 ;0
CODE1==0X35 ;1
CODE2==0X36 ;2
CODE3==0X37 ;3
CODE4==0X38 ;4
CODE5==0X39 ;5
CODE6==0X3A ;6
CODE7==0X3B ;7
CODE8==0X3C ;8
CODE9==0X3D ;9
CODEE==0X3E ;E====第10
CODEC==0X3F ;反向C====第11
/******************************************************************************/
ORG 0X000
nop
nop
nop
JMP START
nop
nop
nop
nop
ORG 0X008
JMP Interupt: ;跳到中断处理程序段
ORG 0X009
START:
DISI ;关全局中断
BC R3,6 ;PS1=0
BC R3,5 ;PS0=0
call delay2ms
call delay2ms
call delay2ms
MOV A,@0
CONTW
/**************初试化************************/
BS R3,5 ;选择页面1
CALL INITIAL ;调用基本功能初始化子程序
CALL CODE_set ;给段码寄存器赋值
CALL Read_refence ;从24C02中读入参数
BC R3,5 ;恢复页面0
CALL display888 ;闪烁显示888
;===========================================
BC 0X09,5 ;选IOCS组0
MOV A,@0b11111111
IOW IOC60 ;PORT6定义为输入口
MOV PORT6,PORT6
nop
nop
nop
nop
nop
;======
JBC PORT6,KEY_CLR ;累计故障清零键按下?(KEY4)
JMP START2 ;N
CLR Found_Num ;Y
CLR Found_Num_LED3
JMP SAVE_data
START2:
CALL display888 ;闪烁
ENI ;全局开中断
WDTC
/***********************主程序*****************************************/
Main:
;====抗干扰措施===============
MOV A,Flag
JBC R3,Z ;有故障处理子程序正在工作?
JMP WORK_STOP ;Z=1 means Flag==0,NO
BC 0x9,5 ;Z=0 means Flag<>0,YES,需要TCC保持中断开放
;选择IOCS控制寄存器组0
IOR 0xF ;IOCF0 to A
MOV temp,A
BS temp,0 ;TCIE置位
IOW 0xF ;保持TCC中断开放
JMP Main_Disp
WORK_STOP: ;当前没有需要处理故障,保持INT开放,TCC屏蔽
BC 0x9,5 ;选择IOCS控制寄存器组0
MOV A,@0b00000100 ;保持INT中断开放,TCC中断屏蔽
IOW 0xF
/****2007-08-30加的抗干扰措施***********/
BC PORT5,Inject ;禁止喷射!
CLR Flag
CLR Num_injecting ;处于喷射状态的故障处理子程序数量,清零
CLR Inject_beforeH1
CLR Inject_before1
CLR Inject_after1
/**************************************/
Main_Disp:
;==========================================
MOV A,Found_Num_LED3
MOV LED_Value2,A
MOV A,Found_Num
MOV LED_Value1,A
CALL DISPLAY
;===========================================
BC 0X09,5 ;选IOCS组0
MOV A,@0b11111111
IOW IOC60 ;PORT6定义为输入口
MOV PORT6,PORT6
nop
nop
nop
nop
nop
;======
Main1:
JBS PORT6,KEY_set1 ;参数设置键1扫描
JMP Set1_work ;设置喷射前等待脉冲数量
Main2:
JBS PORT6,KEY_set2 ;参数设置键2扫描
JMP Set2_work ;设置喷射持续脉冲数
Main3:
JBS Flag_Save,save_E ;存储缺陷数标志置位?
JMP Main ;NO
MOV A,Flag
JBS R3,Z ;所有INT故障子程序处理完毕?
JMP Main
emc.rar_EMC义隆_义隆单片机
版权申诉
46 浏览量
2022-09-23
11:01:18
上传
评论
收藏 9KB RAR 举报
寒泊
- 粉丝: 74
- 资源: 1万+