?? err3.asm
字號(hào):
; 獨(dú)立式誤差計(jì)算器(AT89C52)源程序
; 版本:1.01
; 編寫(xiě):金在東
; 注:用 ">>>>> ("
; ">>>>> )" 號(hào)括起的內(nèi)容是后加用于實(shí)現(xiàn)通道選擇功能
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;======================================= SFR
T2CON DATA 0C8H ; 定時(shí)器/計(jì)數(shù)器2控制寄存器(可位尋址)
T2MOD DATA 0C9H ; 定時(shí)器/計(jì)數(shù)器2方式控制寄存器
; HC5,HC4,HC3,HC2,T2CR,-,T2OE,DCEN
; hc5-hc2 =1時(shí)外中斷5-2標(biāo)志硬件自動(dòng)清除。
; t2cr=1 捕獲完成時(shí)自動(dòng)復(fù)位
; t2oe=1 定時(shí)器2輸出允許
; dcen=1 減計(jì)數(shù)允許,結(jié)合外部輸入t2ex使用,16位自裝入模式
RCAP2L DATA 0CAH ; 定時(shí)器2捕獲低字節(jié)
RCAP2H DATA 0CBH ; 定時(shí)器2捕獲高字節(jié)
TL2 DATA 0CCH ; 定時(shí)器/計(jì)數(shù)器2(低字節(jié))
TH2 DATA 0CDH ; 定時(shí)器/計(jì)數(shù)器2(高字節(jié))
;/* T2CON */
TF2 BIT 0CFH ;//定時(shí)器2溢出標(biāo)志,軟清除
EXF2 BIT 0CEH ;//定時(shí)器2外部標(biāo)志,當(dāng)exen2=1且t2ex引腳負(fù)跳變引起捕獲或重載時(shí)置位,軟清。
RCLK BIT 0CDH ;//接收時(shí)鐘標(biāo)志,=1時(shí)串口0用定時(shí)器2溢出做時(shí)鐘。
TCLK BIT 0CCH ;//發(fā)送時(shí)鐘標(biāo)志,=1時(shí)串口0用定時(shí)器2溢出做時(shí)鐘。
EXEN2 BIT 0CBH ;//定時(shí)器2外部允許標(biāo)志,=1時(shí)若未用作撥特率發(fā)生器,t2ex腳的負(fù)跳變引起捕獲
TR2 BIT 0CAH ;//定時(shí)器2運(yùn)行控制位
C_T2 BIT 0C9H ;//計(jì)數(shù)/定時(shí)選擇,=1時(shí)計(jì)數(shù)
CP_RL BIT 0C8H ;//捕獲/重載標(biāo)志,=1時(shí),外部允許時(shí),vt2ex負(fù)跳變發(fā)生捕獲
;//=0時(shí) 溢出或外部允許時(shí),vt2ex負(fù)跳變發(fā)生重載
;/*--Extensions--------------------------------------------*/
;/* PSW */
F1 BIT 0D1H ;
;/* IE */
ET2 BIT 0ADH ;//定時(shí)器2允許
ES1 BIT 0AEH ;//串口1優(yōu)先
;/* IP */
PT2 BIT 0BDH ;//定時(shí)器2優(yōu)先
PS1 BIT 0BEH ;//串口1優(yōu)先
;======================================= 中斷矢量
VEC_RESET EQU 0000H ; 復(fù)位
VEC_EINT0 EQU 0003H ; 外部中斷0
VEC_T_C0 EQU 000BH ; 計(jì)數(shù)器/定時(shí)器0
VEC_EINT1 EQU 0013H ; 外部中斷1
VEC_T_C1 EQU 001BH ; 計(jì)數(shù)器/定時(shí)器1
VEC_UART EQU 0023H ; 串口通訊中斷
VEC_T_C2 EQU 002BH ; 計(jì)數(shù)器/定時(shí)器2
;======================================= 位定義
;------------------------------- P1端口
PULSE_FC BIT P1.0 ; 被檢表被試脈沖輸入(fc<200kHz)
JDQ_X485OFF BIT P1.1 ; 置高可打開(kāi)本板被檢表的485口
X5043_SDO BIT P1.2 ; 從X5043接收的串行信號(hào)
X5043_CS BIT P1.3 ; 發(fā)送到X5043的串行信號(hào)
X5043_SDI BIT P1.4 ; X5043的串行時(shí)鐘
X5043_CLK BIT P1.5 ; X5043的片
C485_TRSEL BIT P1.7 ; 本板485口的收發(fā)選擇(0收,1發(fā))
PULSE_SELECT BIT P3.5 ; 脈沖高低頻選擇
PULSE_EDGE_SET BIT P3.6 ; 脈沖檢測(cè)沿設(shè)置
CT_CHECK BIT P3.7 ; 電流互感器檢測(cè)
JDQ_BSNAP BIT P1.6 ; 置低可合上24電壓輸入
JDQ_BH BIT P0.3 ; 捕黑繼電器,默認(rèn)短接狀態(tài)
JDQ_AUTO BIT P0.4 ; 自動(dòng)短接繼電器,默認(rèn)斷開(kāi)狀態(tài)
;------------------------------- 片內(nèi)功能位
KEY_DOWN BIT 00H ; 已有鍵按下 20H
KEY_PRESS BIT 01H ; 按鍵有效,可處理
;KEY_NUMBER BIT 02H ; 按鍵為數(shù)字鍵
;DATA_EXIST BIT 03H ; 已有數(shù)字鍵入
DISP_A BIT 08H ; 顯示控制位A 21H
DISP_B BIT 09H ; 顯示控制位B
DISP_C BIT 0AH ; 顯示控制位C
BH_C1 BIT 0BH ; 捕黑控制位
BH_C2 BIT 0CH ; 捕黑控制位
PULSE_A BIT 0DH ; 脈沖選擇控制位A
PULSE_B BIT 0EH ; 脈沖選擇控制位B
PULSE_C BIT 0FH ; 脈沖選擇控制位C
EC_MODE_EE BIT 10H ; EC_FLAGS.0,開(kāi)始誤差計(jì)算 22H
EC_LOOPBEG BIT 14H ; EC_FLAGS.4,已有首脈沖
EC_LOOPFIN BIT 15H ; EC_FLAGS.5,一次減圈完成
EC_BIGDIV BIT 18H ; 大分頻標(biāo)志;置1時(shí)為大分頻,置0時(shí)為小分頻 23H
EC_FCWAIT BIT 19H ; 被試脈沖中斷掛起
EC_FHINC BIT 1AH ; 正在處理標(biāo)拼溢出標(biāo)志
EC_ZZUP BIT 1BH ; 被試脈沖走字更新
EC_PASS BIT 1CH ; 本次誤差超差標(biāo)志
EC_SIGN BIT 1DH ; 誤差計(jì)算結(jié)果的符號(hào)
EC_TOPSIGN BIT 1EH ; 誤差上限符號(hào) 0時(shí)為+,1時(shí)為-
EC_BOTSIGN BIT 1FH ; 誤差下限符號(hào) 0時(shí)為+,1時(shí)為-
EC_FHCAP6 BIT 26H ; EC_FHCAP.6 24H
EC_FHCAP7 BIT 27H ; EC_FHCAP.7
FLAG_TIME_1MS BIT 28H ; 定時(shí)1mS到標(biāo)志 25H
FLAG_CT_FIRST BIT 29H ; CT錯(cuò)誤第一次檢測(cè)標(biāo)志
FLAG_ZZUP_TWO BIT 2AH ; AT93C46_ERR.2,芯片損壞
FLAG_BH_1MS BIT 2BH ; AT93C46_ERR.3
AT93C46_ERR4 BIT 2CH ; AT93C46_ERR.4
AT93C46_ERR5 BIT 2DH ; AT93C46_ERR.5
RESET_FLAG BIT 2EH ; 復(fù)位初始化標(biāo)志 1時(shí)不進(jìn)行RAM初始化
AT93C46_ERR7 BIT 2FH ; AT93C46_ERR.7
FLAG_DL BIT 30H ; 電能誤差試驗(yàn)標(biāo)志 STATE_FLAG 26H
FLAG_RJ BIT 31H ; 日計(jì)時(shí)誤差試驗(yàn)標(biāo)志
FLAG_XL BIT 32H ; 需量周期誤差試驗(yàn)標(biāo)志
FLAG_ZZ BIT 33H ; 走字試驗(yàn)標(biāo)志
FLAG_QD BIT 34H ; 潛動(dòng)試驗(yàn)標(biāo)志
FLAG_QID BIT 35H ; 啟動(dòng)試驗(yàn)標(biāo)志
FLAG_BH BIT 36H ; 捕黑試驗(yàn)標(biāo)志
FLAG_MK BIT 37H ; 脈寬試驗(yàn)標(biāo)志
FLAG_FRAME_A0 BIT 38H ; 幀標(biāo)志A0 27H
FLAG_FRAME_A1 BIT 39H ; 幀標(biāo)志A1
FLAG_FRAME_A2 BIT 3AH ; 幀標(biāo)志A2
FLAG_FRAME_A3 BIT 3BH ; 幀標(biāo)志A3
FLAG_ANSWER BIT 3CH ; 查詢(xún)回傳標(biāo)志
FLAG_ADDR BIT 3DH ; 接收到地址標(biāo)志
FLAG_GATHER BIT 3EH ; 集合標(biāo)志
FLAG_LEN BIT 3FH ; 接收到長(zhǎng)度標(biāo)志
FLAG_COMMAND BIT 40H ; 接收到命令標(biāo)志 28H
FLAG_ADDR_DATA BIT 41H ; 本板地址標(biāo)志
FLAG_COMMAND_ANSWER BIT 42H ; 確認(rèn)命令回傳標(biāo)志
UART_TBUSY BIT 43H ; 通訊發(fā)送就緒標(biāo)志
FLAG_SYS_SN BIT 44H ; 本板地址標(biāo)志,用于確認(rèn)命令回傳
QD_FLAG BIT 45H ; 電表潛動(dòng)試驗(yàn)處理控制位
QID_FLAG BIT 46H ; 電表啟動(dòng)試驗(yàn)處理控制位
ZZ_FLAG BIT 47H ; 電表走字試驗(yàn)處理控制位
FLAG_ERR BIT 48H ; 誤差超差顯示處理標(biāo)志 29H
DISP_FLASH BIT 49H ; 顯示閃爍標(biāo)志
PULSE_WIDTH_FLAG BIT 4AH ; 脈寬測(cè)試試驗(yàn)標(biāo)志
PULSE_CATCH_FLAG BIT 4BH ; 電表捕黑試驗(yàn)標(biāo)志
FLAG_AUTO_SHORT BIT 4CH ; 表位“自動(dòng)短接標(biāo)志”
FLAG_CT_CHECK BIT 4DH ; CT檢測(cè)“出錯(cuò)標(biāo)志”
FLAG_EC_ZZUP BIT 4EH
FLAG_UART BIT 4FH ; 通訊聯(lián)機(jī)標(biāo)志
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.
KEY_CHANNEL BIT 50H ;脈沖通道選擇按鍵標(biāo)志位
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;======================================= 片內(nèi)RAM定義
VERIFY_FLAG1 DATA 11H
VERIFY_FLAG2 DATA 12H
ZZMC_BUF DATA 14H ; 4B 走字時(shí)脈沖存儲(chǔ)初值單元
RJ_BF DATA 18H ; 1B 日計(jì)時(shí)倍頻數(shù)
SYS_T500MS DATA 19H ; 1B
CATCH_SCALE DATA 1AH ; 1B,捕黑試驗(yàn)百分比
CT_CHECK_TIME DATA 1EH ; 2B,CT檢測(cè)時(shí)間
PULSE_SL DATA 21H ; 1B,顯示、脈沖和捕黑選擇信號(hào)映射寄存器(.7.6.5脈沖控制位)(.4.3捕黑控制位)(.2.1.0顯示位碼控制位)
EC_FLAGS DATA 22H ; 1B,誤差計(jì)算器工作標(biāo)志群
EC_FHCAP DATA 24H ; 1B,捕捉標(biāo)頻計(jì)數(shù)最低字節(jié)
AT93C46_ERR DATA 25H ; 1B,AT93C46操作錯(cuò)誤標(biāo)志群
STATE_FLAG DATA 26H ; 1B,試驗(yàn)狀態(tài)標(biāo)志群
DISP_BUFFER DATA 30H ; 7B,顯示緩沖(左到右,最高為燈)
DISP_DIGIT DATA 37H ; 1B,鍵盤(pán)/顯示掃描位碼(0-7)
SYS_T1MS DATA 38H ; 1B,系統(tǒng)1ms定時(shí)器
KEY_TIMER DATA 39H ; 1B,鍵盤(pán)控制計(jì)時(shí)器
KEY_CODE DATA 3AH ; 1B,譯碼后鍵值
CT_ERR_TIME DATA 3BH ; 2B,CT出錯(cuò)時(shí)間
WC_T_C DATA 3DH ; 1B,數(shù)據(jù)發(fā)送次數(shù)
UART_LEN DATA 3EH ; 1B,通訊長(zhǎng)度
UART_CHECK_DATA DATA 3FH ; 1B,校驗(yàn)和
SYS_SN DATA 40H ; 1B,本板序號(hào)
FH_COUNTER DATA 41H ; 7B,標(biāo)頻計(jì)數(shù)擴(kuò)展
FH_CAPTURE DATA 48H ; 4B,標(biāo)頻計(jì)數(shù)低4字節(jié)捕捉存儲(chǔ) ; FH_COUNTER低三位和硬件
FH_RESULT DATA 4CH ; 4B,一次減圈完成的標(biāo)頻計(jì)數(shù)值
FH_CONST DATA 50H ; 6B,標(biāo)準(zhǔn)表常數(shù)(PBCD,1-999999999999)
EC_COUNTER DATA 56H ; 4B,被檢表脈沖走字計(jì)數(shù)
EC_CONST DATA 5AH ; 3B,被檢表常數(shù)(分頻后,PBCD,1-99999)
EC_NUMLOOP DATA 5DH ; 1B,一次誤差計(jì)算的圈數(shù)
EC_RUNLOOP DATA 5EH ; 1B,減圈中的當(dāng)前圈數(shù)
EC_NUMDIVL DATA 5FH ; 1B,分頻的低字節(jié)特殊處理用
EC_TOP DATA 60H ; 2B
EC_BOT DATA 2BH ; 2B
RECV_BPW DATA 2EH ; 1B 接收緩沖存儲(chǔ)控制指針
RECV_BPR DATA 2FH ; 1B 接收緩沖讀取控制指針
TEMP_B0 DATA 62H ; 1B/12B
TEMP_B1 DATA TEMP_B0+1
TEMP_B2 DATA TEMP_B0+2
TEMP_B3 DATA TEMP_B0+3
TEMP_B4 DATA TEMP_B0+4
TEMP_B5 DATA TEMP_B0+5
TEMP_B6 DATA TEMP_B0+6
TEMP_B7 DATA TEMP_B0+7
TEMP_B8 DATA TEMP_B0+8
TEMP_B9 DATA TEMP_B0+9
TEMP_B10 DATA TEMP_B0+10
TEMP_B11 DATA TEMP_B0+11
TEMP_B12 DATA TEMP_B0+12
TEMP_B13 DATA TEMP_B0+13
TEMP_BUFFER DATA 70H ; 16B
RECV_BUF DATA 80H ; 8B 接收緩沖區(qū)
WC_BUFFER DATA 88H ; 12B 誤差發(fā)送緩沖
CHANNEL_BUFFER DATA 0A0H ; 通道號(hào)顯示緩存
;======================================= AT89C52地址定義
EEADS_SN EQU 00H ; 1B,本板序號(hào)
EEADS_SNCHK EQU 70H ; 1B,本板序號(hào)校驗(yàn)碼
;======================================= 常數(shù)定義
;-------------------------------
CONST_T1MS EQU 6 ; 系統(tǒng)1ms基準(zhǔn)=6/6kHz
CONST_KDELAY EQU 10 ; 按鍵時(shí)的去抖時(shí)間(10ms)
CONST_KWAIT EQU 250 ; 響應(yīng)按鍵后的等待時(shí)間(200ms)
;-------------------------------
CONST_SF_SN EQU 57H ; 修改本板序號(hào)密碼:"460415"
;-------------------------------
CONST_SNDEF EQU 0 ; 未設(shè)置時(shí)的默認(rèn)序號(hào)
CONST_SNMAX EQU 96H ; 允許的最大序號(hào)
CONST_SNVER EQU 5AH ; 序號(hào)校驗(yàn)碼因子
;-------------------------------
CONST_KEY_C EQU 0CH ; "常數(shù)"鍵
CONST_KEY_R EQU 0EH ; "確認(rèn)"鍵
CONST_KEY_L EQU 0FH ; "取消"鍵
;-------------------------------
CONST_CHAR_SPC EQU 24H ; 空格
CONST_CHAR_NEG EQU 28H ; 負(fù)號(hào)
CONST_LED_OVER EQU 28H ; "超差"指示燈
CONST_LED_PASS EQU 29H ; "合格"指示燈
;-------------------------------通訊變量
CONST_RBLEN EQU 16 ; 接收緩沖大小
CONST_CMLEN EQU 9 ; 命令最大長(zhǎng)度
;+++++++++++++++++++++++++X5043控制子程序+++++++++++++++++++++++++
;指令名稱(chēng) 指令格式 操作功能
; WREN 0000 0110 “寫(xiě)允許”指令碼
; WRDI 0000 0100 “寫(xiě)禁止”指令碼
; WRSR 0000 0101 “寫(xiě)狀態(tài)寄存器”指令碼
; RDSR 0000 0001 “讀狀態(tài)寄存器”指令碼
; WRITE 0000 A010 “寫(xiě)數(shù)據(jù)”指令碼
; READ 0000 A011 “讀數(shù)據(jù)”指令碼
X5043_WREN_INST EQU 06H ; “寫(xiě)允許”指令
X5043_WRDI_INST EQU 04H ; “寫(xiě)禁止”指令
X5043_WRSR_INST EQU 01H ; “寫(xiě)狀態(tài)寄存器”指令
X5043_RDSR_INST EQU 05H ; “讀狀態(tài)寄存器”指令
X5043_WRITE_INST EQU 02H ; “寫(xiě)數(shù)據(jù)”指令
X5043_READ_INST EQU 03H ; “讀數(shù)據(jù)”指令
X5043_STATUS_REG DATA 1BH ;
X5043_BYTE_ADDR DATA 1CH ;
X5043_BYTE_DATA DATA 1DH ;
X5043_PAGE_ADDR EQU 1F0H ;
X5043_PAGE_DATA1 EQU 22H ;
X5043_PAGE_DATA2 EQU 33H ;
X5043_PAGE_DATA3 EQU 44H ;
X5043_MAX_POLL EQU 99H ;
X5043_INIT_STATE EQU 09H ;
X5043_SLIC EQU 30H ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG VEC_RESET
AJMP MAIN_INIT
INTERRUPT_RET:
RETI
;;;;;;;;;;;;;;外部中斷0 鍵盤(pán)處理;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG VEC_EINT0
PUSH ACC
MOV A,#00H ; COL0鍵值范圍:00H-07H
AJMP KEY_SCAN
;;;;;;;;;;;;;;計(jì)數(shù)器/定時(shí)器0中斷 標(biāo)頻處理 ;;;;;;;;;;;;;;;;;;;
ORG VEC_T_C0
SETB EC_FHINC ; 置標(biāo)頻溢出處理標(biāo)志
AJMP FH_OVER
;;;;;;;;;;;;;;外部中斷1 鍵盤(pán)處理;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG VEC_EINT1
PUSH ACC
MOV A,#08H ; COL1鍵值范圍:08H-0FH
AJMP KEY_SCAN
;;;;;;;;;;;;;;計(jì)數(shù)器/定時(shí)器1中斷 時(shí)鐘處理;;;;;;;;;;;;;;;;;;;
ORG VEC_T_C1
DJNZ SYS_T1MS,INTERRUPT_RET
MOV SYS_T1MS,#CONST_T1MS
AJMP SYS_CLK ; 系統(tǒng)1ms時(shí)鐘
;;;;;;;;;;;;;;串行通訊中斷 RS485;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG VEC_UART
LJMP C485_RECE
FC_LOOP_DIV:
MOV TL2,EC_NUMDIVL ; 大分頻時(shí)立即設(shè)置分頻系數(shù)
AJMP FC_LOOP
;;;;;;;;;;;;;;計(jì)數(shù)器/定時(shí)器2中斷 被檢脈沖;;;;;;;;;;;;;;;;;;;
ORG VEC_T_C2
JB EC_BIGDIV,FC_LOOP_DIV
AJMP FC_LOOP
;;;;;;;;;;;;;;;;;;;;;;;;主程序:系統(tǒng)初始化;;;;;;;;;;;;;;;;;;;;
ORG 0030H
MAIN_INIT:
LCALL YS100 ; 延時(shí)等待復(fù)位穩(wěn)定
CLR EA ; 關(guān)中斷
CLR EX0 ; 關(guān)閉外部中斷0
CLR EX1 ; 關(guān)閉外部中斷1
CLR ET0 ; 關(guān)閉定時(shí)器中斷0
CLR ET1 ; 關(guān)閉定時(shí)器中斷1
CLR ET2 ; 關(guān)閉定時(shí)器中斷2
CLR ES ; 關(guān)閉串行口中斷
; (0B0H)P3 : (.7) RD,(.6) WR,(.5) T1,(.4) T0,(.3)EI1,(.2)EI0,(.1)TXD,(.0)RXD
MOV SP,#094H ; (81H)SP:STACK=80H->0FFH;堆棧設(shè)置
; (0D0H)PSW : (.7) CY,(.6) AC,(.5) F0,(.4)RS1,(.3)RS0,(.2) OV,(.1)NUL,(.0) P
MOV PSW,#0H ; 清標(biāo)志,寄存器組使用0組(00H-07H)
; (87H)PCON : (.7)SMD,(.6)NUL,(.5)NUL,(.4)NUL,(.3)GF1,(.2)GF0,(.1) PD,(.0)IDL
MOV PCON,#0H ; 波特率不加倍,系統(tǒng)為正常工作狀態(tài)
; (88H)TCON : (.7)TF1,(.6)TR1,(.5)TF0,(.4)TR0,(.3)IE1,(.2)IT1,(.1)IE0,(.0)IT0
MOV TCON,#0H ; 停止T0,T1,清中斷標(biāo)志,INT0,INT1用低電平中斷
; (89H)TMOD : (.7)GT1,(.6)TC1,(.5)M11,(.4)M01,(.3)GT0,(.2)TC0,(.1)M10,(.0)M00
MOV TMOD,#27H ; 定時(shí)器0:模式3,拆為兩個(gè)8位計(jì)數(shù)器使用
; TL0為標(biāo)頻計(jì)數(shù)器,TH0為系統(tǒng)時(shí)鐘(借用TR1,TF1)
; 定時(shí)器1:模式2,8位自動(dòng)重裝載,用于波特率控制
MOV TH1,#0FBH ; (8DH)TH1:ft1=18.432MHz/12/(256-251)=307.2kHz
MOV TL1,#0FBH ; (8BH)TL1 波特率=ft1*1/32=9600bps
MOV TH0,#0H ; (8CH)TH0:系統(tǒng)時(shí)鐘=18.432MHz/12/256=6kHz
MOV TL0,#0H ; (8AH)TL0:標(biāo)頻計(jì)數(shù)清零
; (0C8H)T2CON: (.7)TF2,(.6)XF2,(.5)RCL,(.4)TCL,(.3)XE2,(.2)TR2,(.1)TC2,(.0)RC2
MOV T2CON,#02H ; 定時(shí)器2:16位自動(dòng)重裝計(jì)數(shù)器,用于被檢脈沖分頻0000 0010
; (0C9H)T2MOD: (.7)NUL,(.6)NUL,(.5)NUL,(.4)NUL,(.3)NUL,(.2)NUL,(.1)T2O,(.0)DCE
MOV T2MOD,#0H ; T2不輸出,只做加計(jì)數(shù)
MOV RCAP2L,#0H ; (0CAH)RCAP2L
MOV TL2,#0H ; (0CCH)TL2
MOV TH2,#0H ; (0CDH)TH2,第一圈不分頻(1分頻)
; (98H)SCON : (.7)SM0,(.6)SM1,(.5)SM2,(.4)REN,(.3)TB8,(.2)RB8,(.1) TI,(.0) RI
MOV SCON,#70H ; 方式1,10位異步,檢驗(yàn)停止位,允許接收, 01110000
; (0B8H)IP : (.7)NUL,(.6)NUL,(.5)PT2,(.4) PS,(.3)PT1,(.2)PX1,(.1)PT0,(.0)PX0
MOV IP,#0H
SETB PT2 ; 被檢脈沖需立即響應(yīng),應(yīng)優(yōu)先中斷
; OTHER SFR : (83H)DPL,(84H)DPH,(99H)SBUF,(0E0H)ACC,(0F0H)B
;----------------清內(nèi)部RAM------------------------
INIT_CONTINUE0:
CLR A ; 清內(nèi)部RAM
MOV R0,#08H
MOV R1,#0F7H
MAIN_INIT_CLRRAM:
MOV @R0,A ; CLEAR RAM INSIDE(20H-B0H)
INC R0
DJNZ R1,MAIN_INIT_CLRRAM
;--------------對(duì)外圍電路進(jìn)行初始化---------------
MOV SYS_T1MS,#CONST_T1MS
MOV DISP_DIGIT,#7 ; 從最低位開(kāi)始顯示
MOV EC_NUMDIVL,#0FFH ; 1B,分頻的低字節(jié)特殊處理用
MOV RCAP2H,#0FFH ; 默認(rèn)1分頻
CLR EC_BIGDIV ; 為小分頻
MOV A,EC_NUMDIVL
MOV TL2,A
MOV A,RCAP2H
MOV TH2,A
MOV EC_NUMLOOP,#5 ; 檢驗(yàn)圈數(shù)默認(rèn)5圈
MOV EC_CONST+1,#32H ; 被檢表常數(shù)默認(rèn)3200
MOV FH_CONST+3,#18H ; 標(biāo)準(zhǔn)表常數(shù)默認(rèn)18 00 00 00
MOV EC_TOP+1,#02H
CLR EC_TOPSIGN ; 誤差上限+2.0%
MOV EC_BOT+1,#02H
SETB EC_BOTSIGN ; 誤差下限-2.0%
;*************************初始化標(biāo)志位和變量****************
MOV STATE_FLAG,#0 ; 清“試驗(yàn)狀態(tài)標(biāo)志群”
SETB FLAG_DL ; 置“電能校驗(yàn)試驗(yàn)標(biāo)志”
;***********************************************************
CLR FLAG_FRAME_A0 ; 清幀標(biāo)志A0
CLR FLAG_FRAME_A1 ; 清幀標(biāo)志A1
CLR FLAG_FRAME_A2 ; 清幀標(biāo)志A2
CLR FLAG_FRAME_A3 ; 清幀標(biāo)志A3
CLR FLAG_ANSWER ; 清除查詢(xún)?cè)O(shè)備回傳標(biāo)志
CLR FLAG_ADDR ; 清除地址標(biāo)志
CLR FLAG_GATHER ; 清除集合標(biāo)志
CLR FLAG_LEN ; 清除長(zhǎng)度標(biāo)志
CLR FLAG_COMMAND ; 清除命令處理標(biāo)志
CLR FLAG_ADDR_DATA ; 清除有本板地址標(biāo)志,用于A2集合命令
CLR FLAG_COMMAND_ANSWER ; 清除命令回傳標(biāo)志
CLR UART_TBUSY ; 通訊發(fā)送就緒標(biāo)志
CLR FLAG_SYS_SN ; 清除本板地址標(biāo)志,用于確認(rèn)命令回傳
CLR FLAG_ERR
CLR DISP_FLASH
CLR QD_FLAG
CLR QID_FLAG
CLR ZZ_FLAG
CLR PULSE_WIDTH_FLAG
CLR PULSE_CATCH_FLAG
CLR FLAG_AUTO_SHORT
CLR FLAG_CT_CHECK
CLR FLAG_UART
CLR FLAG_TIME_1MS
CLR FLAG_CT_FIRST
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
CLR KEY_CHANNEL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
MOV CT_ERR_TIME,#0H
MOV CT_ERR_TIME+1,#0H
MOV CT_CHECK_TIME,#0H
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -