9
39
323
中级会员
使用道具 举报 送花
3
2078
1004
等待验证会员
#include <AI8051U.H> void main(void) { P0M0 = 0; P0M1 = 0; P4M0 = 0; P4M1 = 0; P40 = 0; while(1) { P00 = 0; P01 = 0; } } 复制代码
//////////////////////////////////////// // 文件名称: main.c // 文件描述: // 文件版本: V1.0 // 修改记录: // 1. (2025-03-30) 创建文件 //////////////////////////////////////// #include "config.h" //默认已包含stdio.h、intrins.h、ai_usb.h等头文件 //////////////////////////////////////// // 项目主函数 // 入口参数: 无 // 函数返回: 无 //////////////////////////////////////// void main(void) { SYS_Init(); P40 = 0; while (1) { u8 i; u8 ucLed = 0xfe; USBLIB_OUT_Done(); //查询方式处理USB接收的数据 for(i = 0; i < 8; i++) { P0 = ucLed; ucLed = _crol_(ucLed,1); delay_ms(500); } ucLed = 0x7f; for(i = 0; i < 8; i++) { P0 = ucLed; ucLed = _cror_(ucLed,1); delay_ms(500); } } } //////////////////////////////////////// // 系统初始化函数 // 入口参数: 无 // 函数返回: 无 //////////////////////////////////////// void SYS_Init(void) { EnableAccessXFR(); //使能访问扩展XFR AccessCodeFastest(); //设置最快速度访问程序代码 AccessIXramFastest(); //设置最快速度访问内部XDATA IAP_SetTimeBase(); //设置IAP等待参数,产生1us时基 P0M0 = 0x00; P0M1 = 0x00; //初始化P0口为准双向口模式 P1M0 = 0x00; P1M1 = 0x00; //初始化P1口为准双向口模式 P2M0 = 0x00; P2M1 = 0x00; //初始化P2口为准双向口模式 P3M0 = 0x00; P3M1 = 0x00; //初始化P3口为准双向口模式 P4M0 = 0x00; P4M1 = 0x00; //初始化P4口为准双向口模式 P5M0 = 0x00; P5M1 = 0x00; //初始化P5口为准双向口模式 P6M0 = 0x00; P6M1 = 0x00; //初始化P6口为准双向口模式 P7M0 = 0x00; P7M1 = 0x00; //初始化P7口为准双向口模式 CLK_Init(); //时钟模块初始化 PORT0_Init(); //P0初始化 PORT4_Init(); //P4初始化 USBLIB_Init(); //USB库初始化 EnableGlobalInt(); //使能全局中断 } //////////////////////////////////////// // 毫秒延时函数 // 入口参数: ms (设置延时的毫秒值) // 函数返回: 无 //////////////////////////////////////// void delay_ms(uint16_t ms) { uint16_t i; do { i = MAIN_Fosc / 6000; while (--i); } while (--ms); } //////////////////////////////////////// // 时钟初始化函数 // 入口参数: 无 // 函数返回: 无 //////////////////////////////////////// void CLK_Init(void) { CLK_SYSCLK_Divider(10); //切换主时钟前先将系统时钟降频 HIRC_40M(); //选择内部预置的频率 CLK_MCLK_HIRC(); //选择内部高精度HIRC作为主时钟 CLK_MCLK2_BYPASS(); //旁路MCLK2,直接使用MCLK选择 CLK_SYSCLK_Divider(1); //设置系统时钟分频系数 CLK_HSIOCK_MCLK(); //选择MCLK主时钟作为高速外设时钟源 CLK_HSIOCK_Divider(1); //设置高速外设时钟预分频系数 CLK_SPICLK_Divider(1); //设置SPI时钟预分频系数 CLK_I2SCLK_Divider(1); //设置I2S时钟预分频系数 CLK_PWMACLK_Divider(1); //设置PWMA时钟预分频系数 CLK_PWMBCLK_Divider(1); //设置PWMB时钟预分频系数 CLK_TFPUCLK_Divider(1); //设置TFPU时钟预分频系数 } //////////////////////////////////////// // P0口初始化函数 // 入口参数: 无 // 函数返回: 无 //////////////////////////////////////// void PORT0_Init(void) { SetP0nQuasiMode(BIT_ALL); //设置P0为准双向口模式 DisableP0nPullUp(BIT_ALL); //关闭P0内部上拉电阻 DisableP0nPullDown(BIT_ALL); //关闭P0内部下拉电阻 DisableP0nSchmitt(BIT_ALL); //使能P0施密特触发 SetP0nSlewRateNormal(BIT_ALL); //设置P0一般翻转速度 SetP0nDrivingNormal(BIT_ALL); //设置P0一般驱动能力 SetP0nDigitalInput(BIT_ALL); //使能P0数字信号输入功能 } //////////////////////////////////////// // P4口初始化函数 // 入口参数: 无 // 函数返回: 无 //////////////////////////////////////// void PORT4_Init(void) { SetP4nQuasiMode(BIT_ALL); //设置P4为准双向口模式 DisableP4nPullUp(BIT_ALL); //关闭P4内部上拉电阻 DisableP4nPullDown(BIT_ALL); //关闭P4内部下拉电阻 DisableP4nSchmitt(BIT_ALL); //使能P4施密特触发 SetP4nSlewRateNormal(BIT_ALL); //设置P4一般翻转速度 SetP4nDrivingNormal(BIT_ALL); //设置P4一般驱动能力 SetP4nDigitalInput(BIT_ALL); //使能P4数字信号输入功能 } //////////////////////////////////////// // USB库初始化函数 // 入口参数: 无 // 函数返回: 无 //////////////////////////////////////// void USBLIB_Init(void) { usb_init(); //初始化USB模块 USB_SetIntPriority(0); //设置中断为最低优先级 set_usb_ispcmd("@STCISP#"); //设置USB不停电下载命令 } //////////////////////////////////////// // 等待USB配置完成函数 // 入口参数: 无 // 函数返回: 无 //////////////////////////////////////// void USBLIB_WaitConfiged(void) { while (DeviceState != DEVSTATE_CONFIGURED); //等待USB完成配置 } //////////////////////////////////////// // USB设备接收数据处理程序 // 入口参数: 无 // 函数返回: 无 // bUsbOutReady:USB设备接收数据标志位 // OutNumber:USB设备接收到的数据长度 // UsbOutBuffer:保存USB设备接收到的数据 //////////////////////////////////////// void USBLIB_OUT_Done(void) { if (bUsbOutReady) //查询是否有接收到数据 { USB_SendData(UsbOutBuffer, OutNumber); //原路返回, 用于测试 usb_OUT_done(); //当前包的数据处理完成 } } 复制代码
本版积分规则 发表回复 回帖后跳转到最后一页
|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )
GMT+8, 2025-8-9 21:41 , Processed in 0.125183 second(s), 91 queries .
Powered by Discuz! X3.5
© 2001-2025 Discuz! Team.