📄 jk0061119.lst
字号:
(0140) {
(0141) press_key_value_pc0++;
(0142) if(press_key_value_pc0>9)
(0143) press_key_value_pc0=1;
(0144) if(press_key_value_pc2==1)
(0145) byte_PASSword_1=press_key_value_pc0;
(0146) else if(press_key_value_pc2==2)
(0147) byte_PASSword_2=press_key_value_pc0;
(0148) else if(press_key_value_pc2==3)
(0149) byte_PASSword_3=press_key_value_pc0;
(0150) else if(press_key_value_pc2==4)
(0151) byte_PASSword_4=press_key_value_pc0;
(0152)
(0153) }
(0154) else if(menu_ID==3)
(0155) {
(0156) press_key_value_pc0++;
(0157) if(press_key_value_pc0>3)
(0158) press_key_value_pc0=1;
(0159) }
(0160) }
(0161) break;
(0162) case 4:
(0163) if(ID_key_pressed==2)
(0164) {
(0165) menu_ID=press_key_value_pc0;
(0166) if(menu_ID==17)
(0167) {
(0168) press_key_value_pc2=23;
(0169) //press_key_value_pc0=1;
(0170) if(Flag_JC_FC)
(0171) { Flag_JC_FC=0;
(0172) JK_IO[0]&=0xFE;}
(0173) else
(0174) {Flag_JC_FC=1;
(0175) JK_IO[0]|=0x01;}
(0176) }
(0177) else
(0178) {
(0179) floor_ID=5;
(0180) press_key_value_pc2=1;
(0181) press_key_value_pc0=1;
(0182) }
(0183) }
(0184) else if(ID_key_pressed==3)
(0185) {
(0186) press_key_value_pc0--;
(0187) if(press_key_value_pc0<1)
(0188) press_key_value_pc0=17;
(0189) }
(0190) else if(ID_key_pressed==1)
(0191) {
(0192) press_key_value_pc0++;
(0193) if(press_key_value_pc0>17)
(0194) press_key_value_pc0=1;
(0195) }
(0196) break;
(0197) case 5:
(0198) if((ID_key_pressed==2)&&(Flag_press_key==0))
(0199) {
(0200) press_key_value_pc2=44;
(0201) Flag_press_key=1;
(0202) if(ASCLL_byte1==0x20)
(0203) ASCLL_byte1=0x30;
(0204) if(ASCLL_byte2==0x20)
(0205) ASCLL_byte2=0x30;
(0206) ASCLL_byte1-=0x30;
(0207) ASCLL_byte2-=0x30;
(0208) ASCLL_byte3-=0x30;
(0209) ASCLL_byte4-=0x30;
(0210) key_change_temp=ASCLL_byte1*1000+ASCLL_byte2*100+ASCLL_byte3*10+ASCLL_byte4;
(0211) if((menu_ID==5)||(menu_ID==6)||(menu_ID==7)||(menu_ID==8))
(0212) {
(0213) temp_temp=key_change_temp-ASCLL_byte4;
(0214) temp_temp*=4095;
(0215) temp_temp/=3000;
(0216) key_change_temp=temp_temp;
(0217) }
(0218) temp1=key_change_temp&0x00FF;
(0219) temp0=(key_change_temp&0xFF00)>>8;
(0220) JK_Value[11+2*menu_ID]=temp1;
(0221) JK_Value[10+2*menu_ID]=temp0;
(0222) ram_array[menu_ID-1]=key_change_temp;
(0223) EEPROMwrite((int)&EEprom_array[2*menu_ID-2],temp0);
(0224) EEPROMwrite((int)&EEprom_array[2*menu_ID-1],temp1);
(0225) WDR();
(0226) }
(0227) else if(ID_key_pressed==3)
(0228) {
(0229) Flag_press_key=0;
(0230) press_key_value_pc2++;
(0231) press_key_value_pc0=1;
(0232) if(menu_ID==17)
(0233) {
(0234) press_key_value_pc0--;
(0235) if(press_key_value_pc0<1)
(0236) press_key_value_pc0=2;
(0237) }
(0238) if((menu_ID==2)||(menu_ID==3)||(menu_ID==4)||(menu_ID==10))
(0239) {
(0240) if(press_key_value_pc2>4)
(0241) press_key_value_pc2=1;
(0242) }
(0243) else
(0244) {
(0245) if(press_key_value_pc2>3)
(0246) press_key_value_pc2=1;
(0247) }
(0248) }
(0249) else if(ID_key_pressed==1)
(0250) {
(0251) Flag_press_key=0;
(0252) if(menu_ID==17)
(0253) {
(0254) press_key_value_pc0++;
(0255) if(press_key_value_pc0>2)
(0256) press_key_value_pc0=1;
(0257) }
(0258) else if((menu_ID==1)||(menu_ID==10))
(0259) {
(0260) if(press_key_value_pc2==1)
(0261) ASCLL_byte1=Var_ASCLL_add(ASCLL_byte1);
(0262) else if(press_key_value_pc2==2)
(0263) ASCLL_byte2=Var_ASCLL_add(ASCLL_byte2);
(0264) else if(press_key_value_pc2==3)
(0265) ASCLL_byte3=Var_ASCLL_add(ASCLL_byte3);
(0266) else if(press_key_value_pc2==4)
(0267) ASCLL_byte4=Var_ASCLL_add(ASCLL_byte4);
(0268) }
(0269) else if((menu_ID==12)||(menu_ID==11))
(0270) {
(0271) if(press_key_value_pc2==1)
(0272) ASCLL_byte2=Var_ASCLL_add(ASCLL_byte2);
(0273) else if(press_key_value_pc2==2)
(0274) ASCLL_byte3=Var_ASCLL_add(ASCLL_byte3);
(0275) else if(press_key_value_pc2==3)
(0276) ASCLL_byte4=Var_ASCLL_add(ASCLL_byte4);
(0277) }
(0278) else if((menu_ID==2)||(menu_ID==3)||(menu_ID==4))
(0279) {
(0280) if(press_key_value_pc2==1)
(0281) ASCLL_byte2=Var_ASCLL_add(ASCLL_byte2);
(0282) else if(press_key_value_pc2==2)
(0283) ASCLL_byte3=Var_ASCLL_add(ASCLL_byte3);
(0284) else if(press_key_value_pc2==4)
(0285) ASCLL_byte4=Var_ASCLL_add(ASCLL_byte4);
(0286) }
(0287) else if(menu_ID>12)
(0288) {
(0289) if(press_key_value_pc2==1)
(0290) ASCLL_byte2=Var_ASCLL_add(ASCLL_byte2);
(0291) else if(press_key_value_pc2==2)
(0292) ASCLL_byte3=Var_ASCLL_add(ASCLL_byte3);
(0293) else if(press_key_value_pc2==3)
(0294) ASCLL_byte4=Var_ASCLL_add(ASCLL_byte4);
(0295) }
(0296) else
(0297) {
(0298) if(press_key_value_pc2==1)
(0299) ASCLL_byte1=Var_ASCLL_add(ASCLL_byte1);
(0300) else if(press_key_value_pc2==2)
(0301) ASCLL_byte2=Var_ASCLL_add(ASCLL_byte2);
(0302) else if(press_key_value_pc2==3)
(0303) ASCLL_byte3=Var_ASCLL_add(ASCLL_byte3);
(0304) }
(0305) }
(0306) break;
(0307) }
(0308) if(ID_key_pressed==4)
(0309) {
(0310) if(floor_ID>1)
(0311) floor_ID--;
(0312) menu_ID=2;
(0313) press_key_value_pc0=1;
(0314) press_key_value_pc2=1;
(0315) byte_PASSword_1=0;
(0316) byte_PASSword_2=0;
(0317) byte_PASSword_3=0;
(0318) byte_PASSword_4=0;
(0319) Flag_press_key=1;
(0320) }
(0321) else if(ID_key_pressed==5)
(0322) {
(0323) press_key_value_pc2=1;
(0324) press_key_value_pc0=1;
(0325) menu_ID=2;
(0326) floor_ID=2;
(0327) byte_PASSword_1=0;
(0328) byte_PASSword_2=0;
(0329) byte_PASSword_3=0;
(0330) byte_PASSword_4=0;
(0331) Flag_press_key=1;
(0332) }
(0333) Time2_press_key_delay=5;
(0334) Time_one_minute=0;
(0335) //PORTD^=0x80;
(0336) PORTA &= 0xEF;
(0337) LCD_light_on_time=2540;*/
(0338) }
_floor_ID_program:
0296 9508 RET
_pow2pow:
c --> R20
i --> R22
X --> R16
0297 940E1BFE CALL push_gset2
FILE: F:\单片机\小监控\新的小监控\连瑞宏达C\JK0061119_communication.h
(0001) unsigned int calcul_value_decimal(unsigned int c,unsigned int a);
(0002) char change_HEX_to_ASCLL(char *ptr,char len);
(0003) //////////////////////////////////////////////////////////////////
(0004) char pow2pow(char X)
(0005) {
(0006) char i,c=1;
0299 E041 LDI R20,1
(0007) if(X)
029A 2300 TST R16
029B F041 BEQ 0x02A4
(0008) {
(0009) for(i=0; i<X; i++)
029C 2766 CLR R22
029D C004 RJMP 0x02A2
(0010) c*=2;
029E E082 LDI R24,2
029F 9F84 MUL R24,R20
02A0 2D40 MOV R20,R0
02A1 9563 INC R22
02A2 1760 CP R22,R16
02A3 F3D0 BCS 0x029E
(0011) }
(0012) return c;
02A4 2F04 MOV R16,R20
02A5 940E1BDB CALL pop_gset2
02A7 9508 RET
_getCRC16:
i --> R22
crc --> R20
len --> R18
ptr --> R16
02A8 940E1BFE CALL push_gset2
(0013) }
(0014) //////通讯部分程序
(0015) ///////////////////////////////////////////////////////////////////////
(0016) unsigned short getCRC16( char *ptr, char len)
(0017) {
(0018) char i;
(0019) unsigned short crc=0xFFFF;
02AA EF4F LDI R20,0xFF
02AB EF5F LDI R21,0xFF
02AC C017 RJMP 0x02C4
(0020) while(len--)
(0021) {
(0022) crc^=*ptr;
02AD 01F8 MOVW R30,R16
02AE 8020 LDD R2,Z+0
02AF 2433 CLR R3
02B0 2542 EOR R20,R2
02B1 2553 EOR R21,R3
(0023) for(i=0; i<8; i++)
02B2 2766 CLR R22
02B3 C00C RJMP 0x02C0
(0024) {
(0025) if(crc&1)
02B4 FF40 SBRS R20,0
02B5 C007 RJMP 0x02BD
(0026) {
(0027) crc>>=1;
02B6 9556 LSR R21
02B7 9547 ROR R20
(0028) crc^=0xA001;
02B8 E081 LDI R24,1
02B9 EA90 LDI R25,0xA0
02BA 2748 EOR R20,R24
02BB 2759 EOR R21,R25
(0029) }
02BC C002 RJMP 0x02BF
(0030) else
(0031) crc>>=1;
02BD 9556 LSR R21
02BE 9547 ROR R20
02BF 9563 INC R22
02C0 3068 CPI R22,0x8
02C1 F390 BCS 0x02B4
(0032) }
(0033) ptr++;
02C2 5F0F SUBI R16,0xFF
02C3 4F1F SBCI R17,0xFF
02C4 2E22 MOV R2,R18
02C5 2433 CLR R3
02C6 5021 SUBI R18,1
02C7 2022 TST R2
02C8 F721 BNE 0x02AD
(0034) }
(0035) return(crc);
02C9 018A MOVW R16,R20
02CA 940E1BDB CALL pop_gset2
02CC 9508 RET
_getCRC12:
i --> R22
crc --> R20
len --> R18
ptr --> R16
02CD 940E1BFE CALL push_gset2
(0036) }
(0037) ////////////////////////////////////
(0038) unsigned short getCRC12( char *ptr, char len)
(0039) {
(0040) char i;
(0041) unsigned short crc=0x0000;
02CF 2744 CLR R20
02D0 2755 CLR R21
02D1 C01B RJMP 0x02ED
(0042) while(len--)
(0043) {
(0044)
(0045) for(i=0x80;i!=0;i>>=1)
02D2 E860 LDI R22,0x80
02D3 C015 RJMP 0x02E9
(0046) {
(0047) if((crc&0x800)!=0)
02D4 FF53 SBRS R21,3
02D5 C007 RJMP 0x02DD
(0048) {
(0049) crc<<=1;
02D6 0F44 LSL R20
02D7 1F55 ROL R21
(0050) crc^=0x80D;
02D8 E08D LDI R24,0xD
02D9 E098 LDI R25,0x8
02DA 2748 EOR R20,R24
02DB 2759 EOR R21,R25
(0051) }
02DC C002 RJMP 0x02DF
(0052) else
(0053) crc<<=1;
02DD 0F44 LSL R20
02DE 1F55 ROL R21
(0054) crc&=0xFFF;
02DF 705F ANDI R21,0xF
(0055) if((*ptr&i)!=0)
02E0 01F8 MOVW R30,R16
02E1 8020 LDD R2,Z+0
02E2 2226 AND R2,R22
02E3 F021 BEQ 0x02E8
(0056) crc^=0x80D;
02E4 E08D LDI R24,0xD
02E5 E098 LDI R25,0x8
02E6 2748 EOR R20,R24
02E7 2759 EOR R21,R25
02E8 9566 LSR R22
02E9 2366 TST R22
02EA F749 BNE 0x02D4
(0057) }
(0058) ptr++;
02EB 5F0F SUBI R16,0xFF
02EC 4F1F SBCI R17,0xFF
02ED 2E22 MOV R2,R18
02EE 2433 CLR R3
02EF 5021 SUBI R18,1
02F0 2022 TST R2
02F1 F701 BNE 0x02D2
(0059) }
(0060) return(crc);
02F2 018A MOVW R16,R20
02F3 940E1BDB CALL pop_gset2
02F5 9508 RET
(0061) }
(0062) //TIMER0 initialisation - prescale:1024
(0063) // WGM: Normal
(0064) // desired value: 13mSec
(0065) // actual value: 12.917mSec (0.6%)
(0066) void timer0_init(void)
(0067) {
(0068) TCCR0= 0x00; //stop
_timer0_init:
02F6 2422 CLR R2
02F7 BE23 OUT 0x33,R2
(0069) TCNT0= 0xA3; //set count
02F8 EA83 LDI R24,0xA3
02F9 BF82 OUT 0x32,R24
(0070) OCR0= 0x2B; //set compare value
02FA E28B LDI R24,0x2B
02FB BF81 OUT 0x31,R24
(0071) TCCR0= 0x05; //start timer
02FC E085 LDI R24,5
02FD BF83 OUT 0x33,R24
(0072) }
02FE 9508 RET
_timer0_ovf_isr:
02FF 922A ST R2,-Y
0300 938A ST R24,-Y
0301 B62F IN R2,0x3F
0302 922A ST R2,-Y
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -