IC解密OB38R08T1 3按键触摸触摸倒计时例程
- IC解密#include "OB38R08T1.h"
- IC解密
- IC解密#define SEGA P0_4
- #define SEGB P0_6
- #define SEGC P1_6
- IC解密#define SEGD P3_1
- #define SEGE P1_7
- #define SEGF P0_7
- #define SEGG P1_5
- #define COM1 P1_1
- #define COM2 P1_4
- #define DR P1_0
- const unsigned char LED7Code[]={
- 0xfc, // 0
- 0x50, // 1
- 0xea, // 2
- 0xae, // 3
- 0x1e, // 4
- 0xb6, // 5
- 0xf6, // 6
- 0x2c, // 7
- 0xfe, // 8
- 0xbe, // 9
- 0x00 // mie
- };
- #define TIMER0_VECTOR 1 //TIMER0 Interrupt Vevtor
- #define d_T0MOD 0x01 //TMOD[3:0] TIMER0 Mode setting
- #define d_T1MOD 0x00 //TMOD[7:4] TIMER1 Mode setting
- #define ET2 0x00 //TIMER2 overflow Interrupt Enable (Default 0 Disable)
- #define ET1 0x00 //TIMER1 overflow Interrupt Enable (Default 0 Disable)
- #define ET0 0x01 //TIMER0 overflow Interrupt Enable (Default 0 Disable)
- #define d_MODEVALUE_T0 65536 //MODE1 16bit 65536
- #define d_RELOADVALUE_T0 2000 //User Define Reload Value 1.5mS
- bit Key_mode_flag;
- bit ledcom_cnt,Dr_Flag1,Dr_Flag2,Dr_Flag3,Key_Fist;
- bit seg1,seg2,seg3,seg4,seg5,seg6,seg7;
- unsigned char TK_cnut,seg,LEDNum,TK_Num,TK_Stat,mode;
- unsigned int Key_Cnt,i;
- void TIMER0_initialize(void) //Initialize TIMER0
- {
- IEN0 |= (ET2<<5)|(ET1<<3)|(ET0<<1); //IE=IEN0 = 0x02;
- TMOD = (d_T1MOD<<4)|(d_T0MOD);
- TH0 = (d_MODEVALUE_T0-d_RELOADVALUE_T0)/256; //MODE1 16bit 65536
- TL0 = (d_MODEVALUE_T0-d_RELOADVALUE_T0)%256;
- //TR0 = 1; //Timer0 Start bit
- PFCON = 0X00;// FOSC/12
- }
- void InitIO(void)
- {
- P0M0 = 0XFF; //TUI WAN
- P0M1 = 0X00;
- P1M0 = 0XFF;
- P1M1 = 0X00;
- P2M0 = 0X00; //
- P2M1 = 0X00;
- P3M0 = 0X02; //
- P3M1 = 0X00;
- P0 = 0XEE;
- P1 = 0XFF;
- }
- //========================================================================================================
- // Command Read Format:
- // Start -> Slave(W) -> Ack -> Command -> Ack ->
- // Re-Start -> Slave(R) -> Ack -> 0x00 -> Ack -> TKSTATUS1 -> Ack -> TKSTATUS0 -> NAck -> Stop
- //
- // Touch Slave(W) Address = 0x60
- // Touch Slave(R) Address = 0x61
- // Read Key Status Command Number = 0x17
- //
- // [Master Example]
- // Start -> 0x60(W) -> Ack -> 0x17 -> Ack ->
- // Re-Start -> 0x61(R) -> Ack -> 0x00 -> Ack -> TKSTATUS1 -> Ack -> TKSTATUS0 -> NAck -> Stop
- //========================================================================================================
- void TOUCH_ISR(void) interrupt d_TK_Vector using 1
- {
- EA = 0;
- ((void(code*)(void))0x209B)(); //Touch ISR Function
- EA = 1;
- }

芯片解密