?? x25045.c
字號:
TAN:DO;/* 糖尿病治療儀 SENSOR FOR TMP04 2001/8/25*/
$INCLUDE (REG52.DCL)
DECLARE VAR LITERALLY 'DECLARE';
VAR BUF(120) BYTE PUBLIC AT(80H) IDATA; /* 中文顯示緩沖區 */
VAR ZBUF(8) WORD PUBLIC;/* 數據顯示緩沖區 */
VAR DI WORD PUBLIC; /* 傳感器緩沖T2 sensor value buf */
VAR DIH BYTE PUBLIC AT(.DI);
VAR DIL BYTE PUBLIC AT(.DI+1);
VAR (ADR,TT,CI)WORD PUBLIC AT(0FAH) IDATA; /* 顯示指針,傳感器緩沖T1 */
VAR (INA,INB,GUNWEI,RUN,DD,RUNM,BP,ER,AM,AP) BYTE PUBLIC;
/*50毫秒計數,脈沖計數,光標位置,運行標置,運行:秒-分單元, 脈沖輸出標記,運行脈沖間隔(調制脈沖) */
VAR ADRH BYTE PUBLIC AT(.ADR) IDATA;
VAR ADRL BYTE PUBLIC AT(.ADR+1) IDATA;
VAR CIH BYTE PUBLIC AT(.CI) IDATA;
VAR CIL BYTE PUBLIC AT(.CI+1) IDATA;
VAR TTH BYTE PUBLIC AT(.TT) IDATA;
VAR TTL BYTE PUBLIC AT(.TT+1) IDATA;
VAR (AA,BB,CC,DAT1,DAT2,COM) BYTE PUBLIC;/* 鍵值,第一參數,第二參數,指令 */
VAR (SWEND,STIME,SFREQ,SMODE,RESET,WORK) BYTE PUBLIC;/*溫度、時間、頻率、模式標記*/
VAR OLED BYTE PUBLIC; /* LED燈輸出緩沖 */
VAR KEYPORT BYTE PUBLIC AT(9C00H) AUXILIARY;/* 鍵盤輸入口 */
VAR OULED BYTE PUBLIC AT(9400H) AUXILIARY; /* LED燈輸出口,高有效 */
VAR OULCD BYTE PUBLIC AT(9000H) AUXILIARY; /* LCD輸出數據口 */
VAR IND BYTE PUBLIC AT(9100H) AUXILIARY; /* LCD輸出命令口 */
VAR EEBUF BYTE PUBLIC; /* EEPROM用緩沖區 */
VAR EE(20) BYTE PUBLIC; /* EEPROM:EE(0)寫或讀字節數,EE(1...)數據 */
VAR RE BIT PUBLIC;
EEPROMIN:PROCEDURE; /*從EEPROM輸入一個字節,結果在EEBUF中 */
VAR III BYTE; /*假定開始時,/CS=0,SCK=0*/
III=0; /*SCK下降沿后,EEPROM輸出數據*/
DO III=0 TO 7; /*P1.4--/CS, P1.6--SCK,P1.5--SO/SI* /
P1_5=1; /* 置P1.5為輸入口 */
P1_6=1;
P1_6=0;
CY=P1_5;
EEBUF=SCL(EEBUF,1);
END;
END EEPROMIN;
EEPROMOUT:PROCEDURE; /*向EEPROM輸出一個字節,EEBUF的內容輸出*/
DECLARE (III,JJJ,KKK) BYTE; /* P1.6--SCK,P1.4--/CS,P1.5-SI/SO */
KKK=EEBUF; /* SCK上升沿鎖入數據 */
DO III=0 TO 7;
P1_6=0;
EEBUF=SCL(EEBUF,1);
P1_5=CY;
P1_6=1;
END;
P1_5=1;
END EEPROMOUT;
EEPROMR_S:PROCEDURE; /*讀EEPROM狀態寄存器*/
P1_6=0; /* SCK=0 */
P1_4=0; /* /CS=0 */
EEBUF=05H; /* 輸出讀命令*/
CALL EEPROMOUT;
CALL EEPROMIN;
P1_6=0; /* SCK=0 */
P1_4=1; /* CS=1 */
END EEPROMR_S;
EEPROMR:PROCEDURE; /*讀EEPROM 從00H ADDR開始,X25045為512BYTE*/
DECLARE III BYTE;/* EE(0)為讀字節數 !!! 調用本程序,先置EE(0)=字節數 */
III=0; /* EE(1)開始放讀出的數據*/
P1_6=0; /* SCK=0 */
P1_4=0; /* /CS=0 */
EEBUF=03H; /* ACC=03H;A_3=A8;EEBUF=ACC; 輸出讀指令 */
CALL EEPROMOUT; /* 調輸出程序 */
EEBUF=00H; /* 輸出低8位地址 EEBUF=ADDR*/
CALL EEPROMOUT; /* 調輸出程序 */
DO III=1 TO EE(0);
CALL EEPROMIN; /* 調輸入程序 */
EE(III)=EEBUF; /* 保存讀出結果 */
END;
P1_6=0; /* SCK=0 */
P1_4=1; /* /CS=1 */
END EEPROMR;
EEPROMW:PROCEDURE; /*寫EEPROM 從A8+ADDR地址開始,X25045為512BYTE*/
DECLARE (III,KKK) BYTE; /*EE(0)為寫字節數 !!! 調用本程序,先置EE(0)=字節數 */
KKK=EE(0)-1; /* P1.6--SCK,P1.4--/CS,P1.5-SO/SI */
DO III=0 to KKK;
P1_6=0; /* SCK=0 */
P1_4=0; /* /CS=0 */
EEBUF=06H; /* 開鎖指令 */
CALL EEPROMOUT; /* 調開鎖指令輸出程序 */
P1_4=1; /* /CS=1 */
P1_4=0; /* /CS=0 */
EEBUF=02H; /*ACC=02H;A_3=A8;EEBUF=ACC; 寫指令 */
CALL EEPROMOUT; /* 調輸出程序,輸出寫指令 */
EEBUF=III; /* ADDR;*/
CALL EEPROMOUT; /* 輸出地址 */
EEBUF=EE(III+1); /*取寫入的數據 */
CALL EEPROMOUT; /* 輸出數據 */
P1_6=0; /* SCK=0 */
P1_4=1; /* /CS=1 */
EEPP:CALL EEPROMR_S; /* 讀狀態寄存器 */
EEBUF=EEBUF AND 01H; /* 判寫數據忙*/
IF EEBUF>0 THEN GOTO EEPP; /*ADDR=ADDR+1;*/
END;
END EEPROMW;
DOG:PROCEDURE;
P1_4=1; /* EEPROM /CS=1 */
P1_4=0; /* /CS=0 */
P1_4=1; /* /CS=1 */
END DOG;
ST:SP=60H;
P1=0FFH;
TMOD=0001$0001B; /* T0定時, T1定時中斷*/
TH1=3CH; /* 定時系數高8位,3CAFH=50毫秒,在12M時鐘;EC78H=10毫秒在6M時鐘 */
TL1=0AFH; /* 定時系數低8位 */
TH0=0;
TL0=0;
RCAP2H=0FEH; /* 65135D=0FE6FH */
RCAP2L=6FH; /* T2 INITIAL */
T2CON=0;
PT1=1; /* T1:HIGH INTERUPT LEVEL */
PT2=0; /* T2:LOW INTERUPT LEVEL */
EA=1;
ET0=0; /* 開定時器0中斷 */
ET1=1; /* 開定時器1中斷 */
ET2=1;
TR0=0; /* =1開定時器0,=0關定時器T0 */
TR1=0; /* =1開定時器1,=0關定時器T1 */
TR2=0;
RE=0;
TT=0;AA=0;BB=0;RUN=0;RUNM=0;BP=0;AM=0;AP=0; /* */
B
GOTO ST;
GOTO ST;
GOTO ST;
GOTO ST;
AA=33;
END TAN;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -