void LCD_write_data(unsigned char Recdata) //写数据 { uint16_t PORT_DATA, tmpCmd = 0; Delay_1ms(2); //LCD1602_RS=1; //RS=1 GPIO_SetBits(LCD1602_RS_PORT, LCD1602_RS_PIN); Delay_1ms(2); PORT_DATA = GPIO_ReadInputData(LCD1602_DB_PORT); PORT_DATA &= (~LCD1602_DB_MASK); tmpCmd = (uint16_t)(LCD_SWAP_High4Bits(Recdata) & 0xf0) << 2; PORT_DATA |= tmpCmd; GPIO_Write(LCD1602_DB_PORT, PORT_DATA); // 写高四位 //LCD_DATA&=0X0f; // 清高四位 //LCD_DATA|=Recdata&0xf0; // 写高四位 LCD_en_write(); Recdata=Recdata<<4; // 低四位移到高四位 PORT_DATA = GPIO_ReadInputData(LCD1602_DB_PORT); PORT_DATA &= (~LCD1602_DB_MASK); tmpCmd = 0; tmpCmd = (uint16_t)(LCD_SWAP_High4Bits(Recdata) & 0xf0) << 2; PORT_DATA |= tmpCmd; GPIO_Write(LCD1602_DB_PORT, PORT_DATA); // 写低四位 //LCD_DATA&=0X0f; // 清高四位 //LCD_DATA|=Recdata&0xf0; // 写低四位 LCD_en_write(); }
int main( void ) { u32 Point = 0; u16 OV7725_ID = 0; SystemInit(); GPIO_Config(); Delay_1ms(1); SSD1963_Config(); Delay_1ms(50); SSD1963_Init(); Delay_1ms(20); TFT_Clear(WHITE); // SCCB Init SCCB_Init(); Delay_1ms(2); // Read ID & Check OV7725_ID = OV_ReadID(); while(OV7725_ID != 0x7721) { LED_R = ~LED_R; Delay_100ms(1); } // OV7725 Init while(1==OV_Init()); Cam_Start(); while(1) { LED_G = ~LED_G; Delay_100ms(1); } }
/*====================================================================================================*/ int main( void ) { u8 i = 0; GPIO_Config(); TIMER_Config(); nrf_gpio_pin_set(LED_0); nrf_gpio_pin_clear(LED_1); while(1) { // nrf_gpio_pin_toggle(LED_0); nrf_gpio_pin_toggle(LED_1); for(i = 0; i<7; i++) { LED_PORT = ~(0x01<<i); Delay_1ms(DELAY_TIME); } // nrf_gpio_pin_toggle(LED_0); nrf_gpio_pin_toggle(LED_1); for(i = 7; i>0; i--) { LED_PORT = ~(0x01<<i); Delay_1ms(DELAY_TIME); } } }
/******************************************************************** * 名称 : Main() * 功能 : 主函数 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void Main(void) { uchar Key_Value; //读出的键值 L1602_init(); L1602_string(1,1," 4*4 KeyBoard "); L1602_string(2,1,"You Press The "); while(1) { P1 = 0xf0; if(P1 != 0xf0) { Delay_1ms(20); //按键消抖 if(P1 != 0xf0) { Delay_1ms(20); //按键消抖 if(P1 != 0xf0) { Key_Value = Keyscan(); } } } L1602_char(2,15,Key_Value / 10 + 48); L1602_char(2,16,Key_Value % 10 + 48); } }
/*====================================================================================================*/ void SF595_Reset( void ) { SF595_MR_L; Delay_1ms(1); SF595_MR_H; Delay_1ms(1); }
//正弦测试 void VS_Sine_Test(void) { VS_HD_Reset(); VS_WR_Cmd(0x0b, 0X2020); //设置音量 VS_WR_Cmd(SPI_MODE, 0x0820); //进入VS10XX的测试模式 while (VS_DREQ_STATE == 0) ; //等待DREQ为高 //printf("mode sin:%x\n",VS_RD_Reg(SPI_MODE)); //向VS10XX发送正弦测试命令:0x53 0xef 0x6e n 0x00 0x00 0x00 0x00 //其中n = 0x24, 设定VS10XX所产生的正弦波的频率值,具体计算方法见VS10XX的datasheet VS_SPI_SpeedLow(); //低速 VS_XDCS_LOW; //选中数据传输 VS_SPI_ReadWriteByte(0x53); VS_SPI_ReadWriteByte(0xef); VS_SPI_ReadWriteByte(0x6e); VS_SPI_ReadWriteByte(0x24); VS_SPI_ReadWriteByte(0x00); VS_SPI_ReadWriteByte(0x00); VS_SPI_ReadWriteByte(0x00); VS_SPI_ReadWriteByte(0x00); Delay_1ms(100); VS_XDCS_HIGH; //退出正弦测试 VS_XDCS_LOW; //选中数据传输 VS_SPI_ReadWriteByte(0x45); VS_SPI_ReadWriteByte(0x78); VS_SPI_ReadWriteByte(0x69); VS_SPI_ReadWriteByte(0x74); VS_SPI_ReadWriteByte(0x00); VS_SPI_ReadWriteByte(0x00); VS_SPI_ReadWriteByte(0x00); VS_SPI_ReadWriteByte(0x00); Delay_1ms(100); VS_XDCS_HIGH; //再次进入正弦测试并设置n值为0x44,即将正弦波的频率设置为另外的值 VS_XDCS_LOW; //选中数据传输 VS_SPI_ReadWriteByte(0x53); VS_SPI_ReadWriteByte(0xef); VS_SPI_ReadWriteByte(0x6e); VS_SPI_ReadWriteByte(0x44); VS_SPI_ReadWriteByte(0x00); VS_SPI_ReadWriteByte(0x00); VS_SPI_ReadWriteByte(0x00); VS_SPI_ReadWriteByte(0x00); Delay_1ms(100); VS_XDCS_HIGH; //退出正弦测试 VS_XDCS_LOW; //选中数据传输 VS_SPI_ReadWriteByte(0x45); VS_SPI_ReadWriteByte(0x78); VS_SPI_ReadWriteByte(0x69); VS_SPI_ReadWriteByte(0x74); VS_SPI_ReadWriteByte(0x00); VS_SPI_ReadWriteByte(0x00); VS_SPI_ReadWriteByte(0x00); VS_SPI_ReadWriteByte(0x00); Delay_1ms(100); VS_XDCS_HIGH; }
void LCD_en_write(void) //液晶使能 { Delay_1ms(1); GPIO_SetBits(LCD1602_EN_PORT, LCD1602_EN_PIN); Delay_1ms(1); GPIO_ResetBits(LCD1602_EN_PORT, LCD1602_EN_PIN); Delay_1ms(1); }
/*==============================================================================================*/ void HMC5883_Init( void ) { u8 HMC5883_Init_Data[3] = { 0x70, /* HMC5883_REG_CONF_A */ 0xA0, /* HMC5883_REG_CONF_B */ 0x00 /* HMC5883_REG_MODE */ }; I2C_DMA_WriteReg(HMC5883_I2C_ADDR, HMC5883_REG_CONF_A, HMC5883_Init_Data, 1); Delay_1ms(10); I2C_DMA_WriteReg(HMC5883_I2C_ADDR, HMC5883_REG_CONF_B, HMC5883_Init_Data+1, 1); Delay_1ms(10); I2C_DMA_WriteReg(HMC5883_I2C_ADDR, HMC5883_REG_MODE, HMC5883_Init_Data+2, 1); Delay_1ms(10); }
/******************************************************************** * 名称 : L1602_init() * 功能 : 1602初始化,请参考1602的资料 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void L1602_init(void) { wcmd(0x38); Delay_1ms(5); wcmd(0x38); Delay_1ms(5); wcmd(0x38); Delay_1ms(5); wcmd(0x38); wcmd(0x08); wcmd(0x0c); wcmd(0x04); wcmd(0x01); }
/** * @brief Main program. * @param None * @retval None */ int main() { RCC_Configuration(); GPIO_Configuration(); SysTick_Configuration(); TIM_Configuration(); while(1) { GPIO_SetBits(GPIOC,GPIO_PIN_0); Delay_1ms(1000); GPIO_ResetBits(GPIOC, GPIO_PIN_0); Delay_1ms(1000); } }
void main() { while(1) { WEI1=0; Write_164(Table[1]); Delay_1ms(11); WEI1=1; WEI2=0; Write_164(Table[2]); Delay_1ms(11); WEI2=1; } }
void TW8836_Reset(void) { GPIO_ResetBits(TW8836_RST_PORT, TW8836_RST_PIN); Delay_1ms(50); GPIO_SetBits(TW8836_RST_PORT, TW8836_RST_PIN); /// Delay_1ms(100); }
void Delay_Nms(u16 Cnt) { while (Cnt--) { Delay_1ms(); } }
/******************************************************************** * 名称 : Main() * 功能 : 主函数 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void main() { int i,temp,flag; while(1) { temp = KEY(); if(temp != 0) //这里判断是否按键按下,按下后,才改变要显示的值 { flag = temp; //存标志 } for(i=0;i<8;i++) { P0=0; P2=tabP2[i]; if(flag == 1) { P0=tabP0Z[i]; //显示“左” } if(flag == 2) { P0=tabP0ZHONG[i]; //显示 中 } if(flag == 3) { P0=tabP0Y[i]; //显示“右” } Delay_1ms(2); } } }
/*====================================================================================================*/ int main( void ) { int32_t Temp = 0; GPIO_Config(); TEMP_Config(); RS232_Config(); Delay_1ms(1); RS232_SendStr("\r\nHello World!\r\n\r\n"); while(1) { LED_1_Toggle(); LED_2_Toggle(); LED_3_Toggle(); LED_4_Toggle(); Delay_100ms(5); RS232_SendStr("Chip Temp : "); Temp = (TEMP_GetTemp()*25); RS232_SendNum(Type_D, 5, Temp); RS232_SendStr(" deg\r\n"); } }
////////////////////////////////////////////////////////////// // Delay 4us ////////////////////////////////////////////////////////////// void MTN5_i2c_Delay(void) { u32 i = 50;//,k=0; //for(;k<10;k++) while (i--) {} Delay_1ms(1); }
void LCD_write_command(unsigned char command) //写指令 { uint16_t PORT_DATA, tmpCmd = 0; //LCD1602_RS=0; //RS=0 GPIO_ResetBits(LCD1602_RS_PORT, LCD1602_RS_PIN); Delay_1ms(2); PORT_DATA = GPIO_ReadInputData(LCD1602_DB_PORT); PORT_DATA &= (~LCD1602_DB_MASK); //GPIO_Write(LCD1602_DB_PORT, PORT_DATA); tmpCmd = ((uint16_t)(LCD_SWAP_High4Bits(command) & 0xf0)) << 2; PORT_DATA |= tmpCmd; GPIO_Write(LCD1602_DB_PORT, PORT_DATA); // 写高四位 LCD_en_write(); command=command<<4; // 低四位移到高四位 PORT_DATA = GPIO_ReadInputData(LCD1602_DB_PORT); PORT_DATA &= (~LCD1602_DB_MASK); //GPIO_Write(LCD1602_DB_PORT, PORT_DATA); tmpCmd = 0; tmpCmd = ((uint16_t)(LCD_SWAP_High4Bits(command) & 0xf0)) << 2; PORT_DATA |= tmpCmd; GPIO_Write(LCD1602_DB_PORT, PORT_DATA); // 写低四位 //LCD_DATA|=command&0xf0; LCD_en_write(); }
void overrun(void) { volatile unsigned char *base = (unsigned char *)0x8300; unsigned char data_L, resend; data_L = readRTL(CR); writeRTL(CR, 0x21); Delay_1ms(2); writeRTL(RBCR0, 0x00); writeRTL(RBCR1, 0x00); if(!(data_L & 0x04)) resend = 0; else if(data_L & 0x04) { data_L = readRTL(ISR); if((data_L & 0x02) || (data_L & 0x08)) resend = 0; else resend = 1; } writeRTL(TCR, 0x02); writeRTL(CR, 0x22); writeRTL(BNRY, RXSTART_INIT); writeRTL(CR, 0x62); writeRTL(CURR, RXSTART_INIT); writeRTL(CR, 0x22); writeRTL(ISR, 0x10); writeRTL(TCR, TCR_INIT); writeRTL(ISR, 0xFF); }
void MPU9255_Init( MPU_InitTypeDef *MPUx ) { uint8_t MPU6555_InitData[MPU9255_InitRegNum][2] = { {0x10, MPU6555_USER_CTRL}, // {0x00, MPU6555_PWR_MGMT_1}, // {0x00, MPU6555_PWR_MGMT_2}, // Enable Acc & Gyro {0x07, MPU6555_CONFIG}, // DLPF_CFG[2:0] = 111; {0x18, MPU6555_GYRO_CONFIG}, // +-2000dps {0x08, MPU6555_ACCEL_CONFIG}, // +-4G {0x48, MPU6555_ACCEL_CONFIG_2}, // Set Acc Data Rates {0x30, MPU6555_INT_PIN_CFG}, // {0x4D, MPU6555_I2C_MST_CTRL}, // I2C Speed 400 kHz // Set Slave to Read AK8963 {0x8C, MPU6555_I2C_SLV0_ADDR}, // AK8963_I2C_ADDR ( 7'b000_1100 ) {0x00, MPU6555_I2C_SLV0_REG}, // AK8963_WIA ( 0x00 ) {0x81, MPU6555_I2C_SLV0_CTRL}, // Enable {0x01, MPU6555_I2C_MST_DELAY_CTRL} }; MPU6555_InitData[4][0] = MPUx->MPU_Gyr_FullScale; // MPU6500_GYRO_CONFIG MPU6555_InitData[3][0] = MPUx->MPU_Gyr_LowPassFilter; // MPU6500_CONFIG MPU6555_InitData[5][0] = MPUx->MPU_Acc_FullScale; // MPU6500_ACCEL_CONFIG MPU6555_InitData[6][0] = MPUx->MPU_Acc_LowPassFilter; // MPU6500_ACCEL_CONFIG_2 for(uint8_t i = 0; i < MPU9255_InitRegNum; i++) { MPU9255_WriteReg(MPU6555_InitData[i][1], MPU6555_InitData[i][0]); Delay_1ms(1); } // while(MPU9255_Check() != SUCCESS); // MPU9255_SetSpeed(SPIx_SPEED_HIGH); }
/*=====================================================================================================*/ int main( void ) { u16 freq = PWM_FREQ_MIN; u16 duty = PWM_DUTY_MAX_205k; u8 state = STATE_FREQ; GPIO_Config(); PWM_Config(); while(1) { LED_G = ~LED_G; if(KEY_WU == 1){ if(state == STATE_FREQ){ freq++; if(freq>=PWM_FREQ_MIN){ freq = PWM_FREQ_MIN; LED_R = ~LED_R; } FREQ = freq-1; PWM1 = freq>>1; }else if(state == STATE_DUTY){ duty++; if(duty>= PWM_DUTY_MAX_205k){ duty = PWM_DUTY_MAX_205k; state = STATE_FREQ; } PWM1 = duty; } Delay_1ms(10); }else if(KEY_BO == 1){
int8_t MPU6050_Init( MPU_InitTypeDef *MPUx ) { uint8_t status = ERROR; uint8_t MPU6050_InitData[MPU6050_InitRegNum][2] = { {0x01, MPU6050_PWR_MGMT_1}, // Reset device {0x03, MPU6050_CONFIG}, // {0x18, MPU6050_GYRO_CONFIG}, // +-2000dps {0x08, MPU6050_ACCEL_CONFIG}, // +-4G {0x32, MPU6050_INT_PIN_CFG}, // {0x00, MPU6050_USER_CTRL} // }; // MPU6050_InitData[6][0] = MPUx->MPU_Gyr_FullScale; // MPU6500_GYRO_CONFIG // MPU6050_InitData[8][0] = MPUx->MPU_Gyr_LowPassFilter; // MPU6500_CONFIG // MPU6050_InitData[7][0] = MPUx->MPU_Acc_FullScale; // MPU6500_ACCEL_CONFIG // MPU6050_InitData[9][0] = MPUx->MPU_Acc_LowPassFilter; // MPU6500_ACCEL_CONFIG_2 for(uint8_t i = 0; i < MPU6050_InitRegNum; i++) { Delay_1ms(2); MPU6050_WriteReg(MPU6050_InitData[i][1], MPU6050_InitData[i][0]); } /* Check Device ID */ status = MPU6050_Check(); if(status != SUCCESS) return ERROR; return SUCCESS; }
/** * @brief Main program. * @param None * @retval None */ int main() { RCC_Configuration(); GPIO_Configuration(); GD_EVAL_LEDInit(LED1); SysTick_Configuration(); TIMER_Configuration(); while(1) { GD_EVAL_LEDOn(LED1); Delay_1ms(1000); GD_EVAL_LEDOff(LED1); Delay_1ms(1000); } }
void Wait_Until_Ready(void) { GPIO_ResetBits(LCD1602_RS_PORT, LCD1602_RS_PIN); //RS_L; //所读为状态位 GPIO_SetBits(LCD1602_RW_PORT, LCD1602_RW_PIN); //RW_R; //设为读状态 En_H; Delay_1ms(1); //delay_nus(10); //while(!(P1^7 == 0)); //不断循环,直至BF=0 GPIO_ResetBits(LCD1602_EN_PORT, LCD1602_EN_PIN); //En_L; }
//硬复位MP3 //返回1:复位失败;0:复位成功 u8 VS_HD_Reset(void) { u8 retry = 0; VS_RST_LOW; Delay_1ms(20); VS_XDCS_HIGH; //取消数据传输 VS_XCS_HIGH; //取消数据传输 VS_RST_HIGH; while (VS_DREQ_STATE == 0 && retry < 200) //等待DREQ为高 { retry++; Delay_1us(50); }; Delay_1ms(20); if (retry >= 200) return 1; else return 0; }
void bno_delay_ms( uint32_t delay_time ) { while( delay_time-- ) #if defined( __GNUC__ ) printf( "Delay" ); #else Delay_1ms(); #endif }
/*==============================================================================================*/ void MS5611_Init( MS5611_ST* COEFF ) { u8 ReadC[6][2] = {0}; u8 ReadD[2][3] = {0}; MS5611_WriteCom(MS5611_I2C_ADDR, MS5611_RESET); Delay_1ms(10); MS5611_WriteCom(MS5611_I2C_ADDR, MS5611_PROM_COEFF_1); MS5611_ReadData(ReadC[0], MS5611_I2C_ADDR, 2); MS5611_WriteCom(MS5611_I2C_ADDR, MS5611_PROM_COEFF_2); MS5611_ReadData(ReadC[1], MS5611_I2C_ADDR, 2); MS5611_WriteCom(MS5611_I2C_ADDR, MS5611_PROM_COEFF_3); MS5611_ReadData(ReadC[2], MS5611_I2C_ADDR, 2); MS5611_WriteCom(MS5611_I2C_ADDR, MS5611_PROM_COEFF_4); MS5611_ReadData(ReadC[3], MS5611_I2C_ADDR, 2); MS5611_WriteCom(MS5611_I2C_ADDR, MS5611_PROM_COEFF_5); MS5611_ReadData(ReadC[4], MS5611_I2C_ADDR, 2); MS5611_WriteCom(MS5611_I2C_ADDR, MS5611_PROM_COEFF_6); MS5611_ReadData(ReadC[5], MS5611_I2C_ADDR, 2); Delay_1ms(10); COEFF->C[1] = (u16)((ReadC[0][0] << 7) | ReadC[0][1]); COEFF->C[2] = (u16)((ReadC[1][0] << 7) | ReadC[1][1]); COEFF->C[3] = (u16)((ReadC[2][0] << 7) | ReadC[2][1]); COEFF->C[4] = (u16)((ReadC[3][0] << 7) | ReadC[3][1]); COEFF->C[5] = (u16)((ReadC[4][0] << 7) | ReadC[4][1]); COEFF->C[6] = (u16)((ReadC[5][0] << 7) | ReadC[5][1]); MS5611_WriteCom(MS5611_I2C_ADDR, MS5611_D1_OSR_4096); Delay_1ms(10); MS5611_WriteCom(MS5611_I2C_ADDR, MS5611_ADC); MS5611_ReadData(ReadD[0], MS5611_I2C_ADDR, 3); MS5611_WriteCom(MS5611_I2C_ADDR, MS5611_D2_OSR_4096); Delay_1ms(10); MS5611_WriteCom(MS5611_I2C_ADDR, MS5611_ADC); MS5611_ReadData(ReadD[1], MS5611_I2C_ADDR, 3); COEFF->D[1] = (u32)((ReadD[0][0] << 15) | (ReadD[0][1] << 7) | ReadD[0][2]); COEFF->D[2] = (u32)((ReadD[1][0] << 15) | (ReadD[1][1] << 7) | ReadD[1][2]); MS5611_Calculate(COEFF); }
void MPU9250_Mag_WriteReg( uint8_t writeAddr, uint8_t writeData ) { uint8_t status = 0; uint32_t timeout = MAG_READ_DELAY; MPU9250_WriteReg(MPU6500_I2C_SLV4_ADDR, AK8963_I2C_ADDR); Delay_1ms(1); MPU9250_WriteReg(MPU6500_I2C_SLV4_REG, writeAddr); Delay_1ms(1); MPU9250_WriteReg(MPU6500_I2C_SLV4_DO, writeData); Delay_1ms(1); MPU9250_WriteReg(MPU6500_I2C_SLV4_CTRL, MPU6500_I2C_SLVx_EN); Delay_1ms(1); do { status = MPU9250_ReadReg(MPU6500_I2C_MST_STATUS); Delay_1ms(1); } while(((status & MPU6500_I2C_SLV4_DONE) == 0) && (timeout--)); }
uint8_t MPU9250_Init( MPU_InitTypeDef *MPUx ) { uint8_t status = ERROR; uint8_t MPU6500_InitData[MPU6500_InitRegNum][2] = { {0x80, MPU6500_PWR_MGMT_1}, // Reset Device {0x01, MPU6500_PWR_MGMT_1}, // Clock Source {0x30, MPU6500_USER_CTRL}, // Set I2C_MST_EN, I2C_IF_DIS {0x00, MPU6500_PWR_MGMT_2}, // Enable Acc & Gyro {0x07, MPU6500_CONFIG}, // DLPF_CFG[2:0] = 111; {0x18, MPU6500_GYRO_CONFIG}, // +-2000dps {0x08, MPU6500_ACCEL_CONFIG}, // +-4G {0x48, MPU6500_ACCEL_CONFIG_2}, // Set Acc Data Rates {0x10, MPU6500_INT_PIN_CFG}, // Set INT_ANYRD_2CLEAR {0x10, MPU6500_INT_ENABLE}, // {0x4D, MPU6500_I2C_MST_CTRL}, // I2C Speed 400 kHz }; uint8_t AK8963_InitData[AK8963_InitRegNum][2] = { {0x01, AK8963_CNTL2}, // Reset Device {0x06, AK8963_CNTL1}, // Continuous measurement mode 2 }; MPU6500_InitData[5][0] = MPUx->MPU_Gyr_FullScale; // MPU6500_GYRO_CONFIG MPU6500_InitData[4][0] = MPUx->MPU_Gyr_LowPassFilter; // MPU6500_CONFIG MPU6500_InitData[6][0] = MPUx->MPU_Acc_FullScale; // MPU6500_ACCEL_CONFIG MPU6500_InitData[7][0] = MPUx->MPU_Acc_LowPassFilter; // MPU6500_ACCEL_CONFIG_2 AK8963_InitData[1][0] |= MPUx->MPU_Mag_FullScale; for(uint8_t i = 0; i < MPU6500_InitRegNum; i++) { MPU9250_WriteReg(MPU6500_InitData[i][1], MPU6500_InitData[i][0]); Delay_1ms(1); } status = MPU9250_Check(); if(status != SUCCESS) return ERROR; Delay_10ms(1); #ifdef _USE_MAG_AK8963 for(uint8_t i = 0; i < AK8963_InitRegNum; i++) { MPU9250_Mag_WriteReg(AK8963_InitData[i][1], AK8963_InitData[i][0]); Delay_10ms(1); } MPU9250_WriteReg(MPU6500_I2C_SLV0_REG, AK8963_ST1); MPU9250_WriteReg(MPU6500_I2C_SLV0_ADDR, AK8963_I2C_ADDR | 0x80); MPU9250_WriteReg(MPU6500_I2C_SLV0_CTRL, 0x80 | 8); #endif MPU9250_SetSpeed(SPIx_SPEED_HIGH); Delay_10ms(1); return SUCCESS; }
void main(void) { uchar Key_Value; //读出的键值 InitLed(); InitKey(); while(1) { P0 = 0xf0;//亮P0 = 0xff闪 //P1 = 0xff; if(P0 != 0xf0) { Delay_1ms(15); //按键消抖 if(P0 != 0xf0) { Key_Value = Keyscan(); } } P1 = table[Key_Value % 16]; //显示低位键值 Delay_1ms(5); } }
void init_I2C1(void) { init_I2C1_lowlevel(); Delay_1ms(100); I2C_write(L3G4200D_ADDR, CTRL_REG1, 0x0F); // X,Y,Z eksenlerini aktif et ve 100Hz data çıkış frekansı I2C_write(L3G4200D_ADDR, CTRL_REG2, 0x00); I2C_write(L3G4200D_ADDR, CTRL_REG3, 0x00); //eğer istenilirse sensörün int2 (data hazır) interuptı kullanılabilir I2C_write(L3G4200D_ADDR, CTRL_REG4, 0x00); //250 DPS I2C_write(L3G4200D_ADDR, CTRL_REG5, 0x00); }