📄 rf73c1.c
字号:
{goto RCV2;}
else {NOP();}
}
RCV2:
CNT0=0;
CNT1=0;
RCV3:
if(RFIN) {goto RCV6;}
else {NOP();} asm("MOVLW 5 ;(MAX+2559)/10/256"); // ?
CNT0++;
if(!ZERO) {goto RCV5;}
else {NOP();}
CNT1++;
asm("SUBWF _CNT1,W");
if(CARRY) {goto RMT_0;}
else {NOP();}RCV5:
asm("CLRWDT");
goto RCV3;
RCV6:
CARRY=0;
CNT1=CNT1>>1;
CNT0=CNT0>>1;
CNT1=CNT1>>1;
CNT0=CNT0>>1;
CNT1=CNT1>>1;
CNT0=CNT0>>1;
if(CNT0<MIN/80) {goto RMT_0;}
else {NOP();}
CNT1=NBITS;
CNT2=CNT0;
CNT2-=5;
goto DL1;
RCV8:
CNT2=CNT0-1;
// RCV9:
for(;CNT2>0;CNT2--)
{
if(RFIN) {goto RCV11;}
else {NOP();}
asm("CLRWDT");
}
CNT2=CNT0<<1;
// RCV10:
for(;CNT2>0;CNT2--)
{
if(RFIN) {goto RMT01;}
else {NOP();}
asm("CLRWDT");
}
CNT2=0xff;
// RCV10A:
for(;CNT2>0;CNT2--)
{
if(RFIN) {goto RCV11;}
else {goto RMT01;}
}
RCV11:
CNT2=CNT0;
CNT2--;
CNT2--;
NOP();
NOP();
DL1:
for(;CNT2>0;CNT2--)
{
asm("CLRWDT");
}
if(!RFIN) {goto RMT01;}
else {NOP();}
CNT2=CNT0;
CNT2--;
CARRY=0;
CNT2=CNT2<<1;
NOP();
NOP();
// DL2:
for(;CNT2>0;CNT2--)
{
asm("CLRWDT");
}
asm("BCF _FLAGS,0");
if(!RFIN) {asm("BSF _FLAGS,0");}
else {NOP();}
CNT2=CNT0;
CARRY=0;
CNT2=CNT2<<1;
CNT2-=5;
CARRY=0;
rot_shift();
if(FLAGS&&0X01) {asm("BSF _CSR7,7");}
else {NOP();}// DL3:
for(;CNT2>0;CNT2--)
{
asm("CLRWDT");
}
if(RFIN) {goto RMT0;}
else {NOP();}
tst_rtcc();
CNT1--;
if(CNT1) {goto RCV8;}
else {goto RMT1;}
RMT_0:
asm("BSF _CNT1,4");
RMT0:
CNT1--;
RMT01:
tst_rtcc();
if(CNT1>=9) {return;}
else {NOP();}// RMT2:
for(;CNT1>0;CNT1--)
{
rot_shift();
}
asm("CLRF _CSR7");
asm("BSF _FLAGS,5");
RMT1:
CARRY=0;
asm("MOVF _SREG,W");
asm("XORLW 0CAH");
if(ZERO) {return;}
else {NOP();}
if(FLAGS&&0X80) {O_RFLED=1;}
else {NOP();} CARRY=0;
return;
}
/*=====================================*/
void tst_rtcc(void)
{
asm("CLRWDT");
#asm // a10
MOVF _STATUS,W
XORWF _TMR0,W
ANDLW 080H
#endasm // a10n
if(ZERO) {return;}
else {NOP();}
#asm // a11
MOVF _TMR0,W
ANDLW 080H
IORWF _STATUS
#endasm // a11n
CNT_LW++;
if(ZERO) {CNT_HI++;}
else {NOP();}
TRISC=RDCFG;
if(!TMR0^0X80) {return;}
else {NOP();}
if(SREG^PASS1) {O_RFLED=1;}
else {NOP();}
if(CNT_LW&&0X08)
{
asm("BCF _FLAGS,7");
OLD_BUT=0;
}
else {NOP();}
if(SREG^NORMAL) {return;}
else {NOP();}
if(!CNT_HI&&0X04) {return;}
else {NOP();}
CSR3=0;
OLD_BUT=0;
FLAGS=0;
CSR1=0;
CSR0=0;
SREG=NORMAL;
return; // ?
}
/*=====================================*/
void tx_lookup(void)
{
asm("CLRWDT");
tx_lookup2();
asm("MOVWF _ADDRESS");
return;
}
/*=====================================*/
void rot_shift(void)
{
asm("CLRWDT");
#asm // a12
RRF _CSR7
RRF _CSR6
RRF _CSR5
RRF _CSR4
RRF _CSR3
RRF _CSR2
RRF _CSR1
RRF _CSR0
#endasm // a12n
return;
}
/*=====================================*/
void chk_pass2(void)
{
asm("CLRWDT");
asm("MOVLW 0CAH");
asm("XORWF _SREG,W");
return;
}
/*=====================================*/
void ee_read1(void)
{
asm("CLRWDT");
OUTBYT=ADDRESS;
asm("BSF _OUTBYT,7");
sendc();
TRISC=RDCFG;
CNT1=16;
for(;CNT1>0;CNT1--)
{
CLK=1;
TMP2=TMP2<<1;
asm("BCF _TMP2,0");
if(DIO) {asm("BSF _TMP2,0");}
else {NOP();}
CLK=0;
TMP1=TMP1<<1;
}
CS=0;
CNT1=16;
for(;CNT1>0;CNT1--)
{
rotl();
OUTBYT=TMP1&&0X07;
#asm // a12
MOVLW (EE_KEY-KEYBASE)
ADDWF _OUTBYT,W
#endasm // a12n
key_lookup();
asm("XORWF _TMP2");
}
return;
}
/*=====================================*/
void decrypt(void)
{
asm("CLRWDT");
CNT1=11+1;
for(;CNT1>0;CNT1--)
{
CNT0=48;
for(;CNT0>0;CNT0--)
{
asm("CLRWDT");
if(CNT1^1) {goto ROTATE_KEY;}
else {NOP();}
CARRY=0;
if(HOP3&&0X08) {OUTBYT=0X10;}
else {OUTBYT=1;}
if(CSR1&&0X01) {OUTBYT=OUTBYT<<2;}
else {NOP();}
if(HOP1&&0X01) {OUTBYT=OUTBYT<<1;}
else {NOP();}
#asm // a13
MOVLW 0
BTFSC _CSR3,1
IORLW 2
BTFSC _CSR3,6
IORLW 4
ADDWF _PCL
MOVLW 02EH
GOTO TABLE_END
MOVLW 074H
GOTO TABLE_END
MOVLW 05CH
GOTO TABLE_END
MOVLW 03AH
GOTO TABLE_END
TABLE_END:
ANDWF _OUTBYT
MOVLW 0
BTFSS 3,2
MOVLW 10000000B
XORWF _CSR1,W
XORWF _CSR3,W
XORWF _TMP1,W
MOVWF _OUTBYT
#endasm // a13n
OUTBYT=OUTBYT<<1;
HOP1=HOP1<<1;
CSR1=CSR1<<1;
HOP3=HOP3<<1;
CSR3=CSR3<<1;
ROTATE_KEY:
CARRY=0;
if(KEY7&&0X40) {CARRY=1;}
else {NOP();}
KEY0=KEY0<<1;
TMP1=TMP1<<1;
KEY2=KEY2<<1;
KEY3=KEY3<<1;
KEY4=KEY4<<1;
KEY5=KEY5<<1;
KEY6=KEY6<<1;
KEY7=KEY7<<1;
}
}
return;
}
/*=====================================*/
void ee_write1(void)
{
asm("CLRWDT");
for(CNT1=16;CNT1>0;CNT1--)
{
OUTBYT=TMP1&&0X07;
#asm // a13
MOVLW (EE_KEY-KEYBASE)
ADDWF _OUTBYT,W
#endasm // a13n
key_lookup();
asm("XORWF _TMP2");
rotr();
}
OUTBYT=0X30;
sendc();
CS=0;
OUTBYT=ADDRESS;
asm("BSF _OUTBYT,6");
sendc();
for(CNT1=16;CNT1>0;CNT1--)
{
if(TMP1^0X80) {DIO=1;}
else {DIO=0;}
NOP();
TMP2=TMP2<<1;
CLK=1;
NOP();
TMP1=TMP1<<1;
CLK=0;
}
CS=0;
TRISC=RDCFG;
CS=1;
while(!DIO)
{
chk_timer();
}
CS=0;
OUTBYT=0;
sendc();
ADDRESS++;
return;
}
/*=====================================*/
void but_lookup(void)
{
asm("CLRWDT");
#asm // a9
MOVF _TXNUM,W
ADDWF _PCL,F
RETLW 02H
RETLW 03H
RETLW 08H
RETLW 09H
RETLW 0AH
RETLW 0BH
#endasm // a9n
// AQ1 ?
}
/*=====================================*/
void key_lookup(void)
{
asm("CLRWDT");
#asm // a7
ADDWF _PCL,F
KEYBASE EQU $
MAS_KEY EQU $
RETLW 0AFH ; MKEY_0 LSB 200505
RETLW 018H ; MKEY_1
RETLW 032H ; MKEY_2
RETLW 005H ; MKEY_3
RETLW 030H ; MKEY_4
RETLW 004H ; MKEY_5
RETLW 005H ; MKEY_6
RETLW 020H ; MKEY_7 MSB
EN_KEY EQU $
RETLW 0FFH
RETLW 0FFH
EE_KEY EQU $
RETLW 088H ; EKEY_0 LSB
RETLW 077H ; EKEY_1
RETLW 066H ; EKEY_2
RETLW 055H ; EKEY_3
RETLW 044H ; EKEY_4
RETLW 033H ; EKEY_5
RETLW 022H ; EKEY_6
RETLW 011H ; EKEY_7 MSB
#endasm // a7n
}
/*=====================================*/
void tx_lookup2(void)
{
asm("CLRWDT");
#asm // a8
MOVF _TXNUM,W
ADDWF _PCL,F
RETLW 10H
RETLW 18H
RETLW 20H
RETLW 28H
RETLW 30H
RETLW 38H
#endasm // a8n
}
/*=====================================*/
void rotl(void)
{
asm("CLRWDT");
TMP2=TMP2<<1;
TMP1=TMP1<<1;
if(CARRY) {asm("BSF _TMP2,0");}
else {asm("BCF _TMP2,0");}
return;
}
/*=====================================*/
void sendc(void)
{
asm("CLRWDT");
CS=0;
CLK=0;
DIO=0;
TRISC=WRCFG;
CS=1;
CARRY=1;
for(CNT1=9;CNT1>0;CNT1--)
{
if(CARRY) {DIO=1;}
else {DIO=0;}
NOP();
OUTBYT=OUTBYT<<1;
CLK=1;
NOP();
NOP();
CLK=0;
}
DIO=0;
return;
}
/*=====================================*/
void rotr(void)
{
asm("CLRWDT");
TMP1=TMP1>>1;
TMP2=TMP2>>1;
if(CARRY) {asm("BSF _TMP1,7");}
else {asm("BCF _TMP1,7");}
return;
}
/*=====================================*/
void chk_timer(void)
{
asm("CLRWDT");
if(!TMR0&&0X80) {return;}
else {NOP();}
asm("BCF _TMR0,7");
CNT_LW++;
if(ZERO) {CNT_HI++;}
else {NOP();}
if(!FLAGS&&0X10) {CNT1=10;}
else {asm("BSF _FLAGS,4");}
if(CNT1--) {return;}
else {NOP();}
CSR3=0;
OLD_BUT=0;
FLAGS=0;
CSR1=0;
CSR0=0;
SREG=NORMAL;
return; // ?
}
/*=====================================*/
/***************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -