📄 test_485.asm
字号:
mov A,9 ;
mov Rd_Count,A ;9个数据,主机参数设定
jmp Exit_Int ;
JR_is_Msel: ;
mov A,7 ;
mov Rd_Count,A ;7个数据,开/关主机选择
jmp Exit_Int ;
JR_is_MM10_13:
mov A,5 ;
mov Rd_Count,A ;11个数据,MW10
jmp Exit_Int ;
;----------------------------------------------------;
;-----> 检查从机回应文本的哪个显示数据? <-----;
;----------------------------------------------------;
JR_is_DspDt:
set bt_dsp ;
mov A,6 ;回应6个数据
mov Rd_Count,A ;
jmp Exit_Int ;
;----------------------------------------------------;
;-----------> 检查接收到的数据 <-----------;
;----------------------------------------------------;
JR_rx_Data:
sz bt_set ;
jmp JR_set_Dat ;set data
sz bt_dsp ;
jmp JR_Dsp_Dat ;display data
jmp Exit_Int ;退出中断服务程序
;----------------------------------------------------;
JR_set_Dat: ;4a~58
mov A,49h ;
add A,Rd_Count ;
mov MP0,A ;
mov A,rcreg ;
mov r0,A ;
inc MP0 ;
sdz Rd_Count ;
jmp Exit_Int ;数据码没接完,再收
clr Rd_Count ;
clr FLAG_RX ;
set bb_setdt
clr bb_dspdt
jmp Exit_Int ;数据码没接完,再收
;----------------------------------------------------;
JR_Dsp_Dat:
mov A,71h ;72~79
add A,Rd_Count
mov MP0,A ;
mov A,rcreg ;
mov r0,A ;
inc MP0 ;
sdz Rd_Count ;
jmp Exit_Int ;数据码没接完,再收
clr Rd_Count ;
clr FLAG_RX ;
set bb_dspdt ;
clr bb_setdt ;
jmp Exit_Int ;数据码没接完,再收
;*******************************************************************;
;*******************************************************************;
;---------> ( 8ms ) Timer0 中断服务子程序 <---------;
;*******************************************************************;
Timer0_Int:
mov Tempr_ACC,a ;保存ACC入栈
mov a,status ;
mov Tempr_STA,a ;保存status入栈
clr wdt ;
;------------------------------------------------;
Timer_100ms:
sz bt_100ms ;80ms 点名读取个从机的参数到TD220显示
jmp Timer_24ms ;
inc R_100ms ;
mov A,R_100ms ;
sub A,12;10 ;10*8=80ms
snz c ;
jmp Timer_24ms ;
clr R_100ms ;
set bt_100ms ;
;------------------------------------------------;
Timer_24ms:
sz bt_24ms ;24ms
jmp Exit_Int ;
inc R_24ms ;
mov A,R_24ms ;
sub A,3 ;3*8=24ms
snz c ;
jmp Exit_Int ;
clr R_24ms ;
set bt_24ms ;
;----------------------------------------------------------------;
;----------------> 退出中断服务程序 <----------------;
;----------------------------------------------------------------;
Exit_Int:
mov A,Tempr_STA ;
mov status,A ;恢复status
mov A,Tempr_ACC ;恢复ACC
RETI
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;
;=======================================================================;
;***********************************************************************;
;***********************************************************************;
; PROGRAM START ;
;***********************************************************************;
MAIN_Start:
clr intc0 ;
clr intc1 ;
clr tmr0 ;
clr tmr0c ;
;----------------------------------------------------------;
; SET IO PORT ;
;----------------------------------------------------------;
INI_IO:
mov A,00110000b ;PD.567
mov PDC,A ;PD.45 input,PD.012367 output
mov PD,A ;PD.432
;----------------------------------------------------------;
; timer initial set ;
;----------------------------------------------------------;
JI_Timer_set: ;256-6=250
mov A,6 ;250*32us=8000us=8ms
mov tmr0,A ;
mov A,10000111b ;设定为定时模式,时钟来源为Fsys/128
mov tmr0c,A ;Fint=Fsys/128=4MHz/128=(1/32)Mhz=32us
;----------------------------------------------------------;
;--------->> 检查是不是正常复位 <<---------;
;----------------------------------------------------------;
JI_chk_reset:
;mov A,[7eh] ;
;xor A,0aah ;
;snz Z ;
jmp JI_initial_CLR ;
mov A,[7fh] ;
xor A,55h ;
snz z ;
jmp JI_initial_CLR ;
Re_start:
;jmp Main_pro_go ;
;----------------------------------------------------------;
; Data RAM initial clear 0 ;
;----------------------------------------------------------;
JI_initial_CLR:
clr bp
mov A,0ffh ;清内存(28h ~ 7fh)
mov mp0,A ;
RAM_clr_Loop:
CLR WDT ;
mov A,0 ;
mov r0,A ;
dec mp0 ;
mov A,039h ;check 39h
xor A,mp0 ;
snz z ;
jmp RAM_clr_Loop ;
;----------------------------------------------------------;
RAM_clr_end:
mov A,0aah ;
mov [07eh],A ;
mov A,55h ;
mov [07fh],A ;
;----------------------------------------------------------;
;----------------------------------------------------------;
;----------------------------------------------------------;
;----------------------------------------------------------;
Pro_start:
clr PD.3 ;允许485接收
clr PD.6 ;允许485接收
mov a,00001011B ;开总中断,开定时器中断,外部中断
mov intc0,a ;
set tmr0c.4 ;定时器开始记时
;----------------------------------------------------------;
call JJ_CLR_MW00_01 ;clear MW00,MW01
call Delayy
call JJ_CLR_MW02_09 ;clear MW02 ~ MW09
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;
;***********************************************************************;
;***********************************************************************;
; ;
; Main program Loop area ;
; ;
;***********************************************************************;
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@;
Main_Pro_RUN:
nop
;---------------------------------------------------------;
; 文本选择的要查看的机组号(MW11) ;
;---------------------------------------------------------;
Main_1001:
call Delayy
call JJ_Read_MW10 ;文本选择的要查看的机组(MW11)
JJ_wait_01:
snz bb_setdt ;
jmp Main_1001 ;是中转站给从机设置的参数
Main_Slave_sel:
clr bb_setdt ;
mov A,01h ;从机号(01)
mov Rx_data06,A ;
mov A,03h ;
mov Rx_data07,A ;功能码 (03h)
call JJ_CHKCRC_MW10 ;中转站读取 文本设置的 MW10 取的CRC码
mov A,RMB_CRCH ;检查CRC码是否正确
xor A,Rx_data11 ;
snz z ;
JMP JVM_MW10_Err ;
mov A,RMB_CRCL ;
xor A,Rx_data12 ;
snz z ;
JMP JVM_MW10_Err ;
JVM_MW10_OK:
mov A,Rs_old_sel ;一样?
xor A,Rx_data07 ;
sz z ;
jmp Main_1002 ;一样,退出
mov A,Rx_data07 ;文本选择查看的从机号
mov TTx_Data1_L,A ;
mov Rs_old_sel,A ;
jmp Main_Dsp_NewSlave ;
JVM_MW10_Err:
clr bb_setdt ;
jmp Main_1001 ;错误,再发,再收
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++;
;---------> 把文本设置的参数读入并存储在EEPROM中 <---------;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++;
;*********************************************************;
;---------------------------------------------------------;
; 开/关主机选择(MW01,02)设置 ;
;---------------------------------------------------------;
Main_1002:
call Delayy
call JJ_Read_MW00_01 ;开/关主机选择(MW01,02)
JJ_wait_02:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -