7
2
47
新手上路
//第6集 I/O输入输出 // note: //|=或等于:不会覆盖最初的 //换行\r\n //#define printf printf_hid //define 替换名 被替换名 //*fmt格式控制字符串 //调用头文件 #include "ai8051u.h" #include "stc32_stc8_usb.h" #include "intrins.h" //宏定义,定义8位无符号变量(0-255) define u8 unsigned char //定义16位无符号变量(0-65536) //define u16 unsigned int //定义一个变量,用于记录状态,初始状态为0; u8 state = 0; char *USER_DEVICEDESC = NULL; char *USER_PRODUCTDESC = NULL; CHAR *USER_STCISPCMD = "@STCISP#"; //24.000MHZ延时20ms void Delay20ms(void) { unsigned long edata i; _nop_(); _nop_(); i = 119998UL; while (i) i--; } void main(void) { //功能脚切换控制,B7位代表EAXFR,1代表能访问,1000 0000转换成十六进制为80 // P_SW2 |= 0x80; //设置程序指令延时参数,赋值为0可将cpu执行指令的速度设置为最快 WTST = 0; // 扩展寄存器(XFR)访问使能 EAXFR = 1; // 提高访问XRAM的速度 CKCON = 0; // P0端口为准双向口 P0M0 = 0x00; P0M1 = 0x00; // P4端口为准双向口 P4M0 = 0x00; P4M1 = 0x00; // 所有口设置为准双向口 P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; P6M0 = 0x00; P6M1 = 0x00; P7M0 = 0x00; P7M1 = 0x00; // USB DC接口初始化 usb_init(); // 使能USB中断 IE2 |= 0x80; // 打开总开关 EA = 1; // 打开P40,8颗灯的开关, P40 = 0; // 等待USB完成配置 while(DeviceState != DEVSTATE_CONFIGURED); while(1) { if(bUsbOutReady) { // 发送数据缓冲区,长度 // USB_SendData(UsbOutBuffer,OutNumber); usb_OUT_done(); } // task1:按下P32按钮灯亮,松开P32按钮灯灭 // 判断p32按钮是否按下 if(P32 == 0) { P00 = 0; } else { P00 = 1; } // task2:按下P32按钮灯灭,松开P32按钮灯亮 // 判断p32按钮是否按下 if(P32 == 1) { P00 = 0; } else { P00 = 1; } // task3:按下P32按钮灯亮,再按一下P32灯灭,以此循环 // if(P32 == 0) // { // state取反后赋值给state // state = !state // P00 = state; // 等待P32松开 // while(P32 == 0); // } // task3:按下P32按钮灯亮,再按一下P32灯灭,以此循环 if(P32 == 0) { // 调用函数延迟20ms,消除抖动 Delay20ms(); if(P32 == 0) { state = !state P00 = state; printf("state:%d\r\n",(int)state); // 等待P32松开 while (P32 == 0) } } else { P00 = 1; } // P40、P00、P01端口输出为0V P40 = 0; P00 = 0; P01 = 0; } } 复制代码
学习笔记
使用道具 举报 送花
本版积分规则 发表回复 回帖后跳转到最后一页
|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )
GMT+8, 2025-5-9 02:15 , Processed in 0.105289 second(s), 55 queries .
Powered by Discuz! X3.5
© 2001-2025 Discuz! Team.