YangHY
发表于 2025-12-28 11:18:38
看看我们新的AI_usb.h
我们新学的虚拟LED函数就有了:
int SEG7_ShowString(const char *fmt, ...);
void SEG7_ShowLong(long n, char radix);
void SEG7_ShowFloat(float f);
void SEG7_ShowCode(BYTE *cod);
void LED40_SendData(BYTE *dat, BYTE size);
void LED40_SetPort(BYTE port, BYTE dat);
void LED40_SetBit(BYTE port, BYTE bt);
void LED40_ClrBit(BYTE port, BYTE bt);
YangHY
发表于 2025-12-28 11:22:05
记得在Ai_usb.h里打开prinf()函数:
#ifndef __AI_USB_H__
#define __AI_USB_H__
#include "def.h"
//使用串口“printf”打印信息需屏蔽以下两个定义
//#define PRINTF_SEGLED //printf输出重定向到ISP下载软件中的7段数码管
//#define PRINTF_HID //printf输出直接重定向到USB口
#define PRINTF_USB //printf输出直接重定向到USB口
否则我们用不了printf()函数
YangHY
发表于 2025-12-28 11:25:51
我们把这个lib文件给它换一下
移除旧stc_usb_cdc_32.LIB
换新的stc_usb_cdc_32.LIB
YangHY
发表于 2025-12-28 11:26:44
更换好头文件和库函数文件,再来编译
就一切正常:
YangHY
发表于 2025-12-28 11:33:20
task.c里这样设置:
static TASK_COMPONENTS Task_Comps[]=
{
//状态计数周期函数
// {0, 300, 300, LED0_Blink}, /* task 1 Period: 300ms */
// {0, 600, 600, LED1_Blink}, /* task 1 Period: 600ms */
// {0, 900, 900, LED2_Blink}, /* task 1 Period: 600ms */
{0, 10, 10, KEY_Task}, /* task 1 Period: 600ms */
{0, 500, 500, TASK_1}, /* task 1 Period: 500ms */
{0, 500, 500, TASK_2}, /* task 1 Period: 500ms */
// {0, 10, 10, TASK_3}, /* task 1 Period: 500ms */
};
YangHY
发表于 2025-12-28 11:35:13
编译连接下载后
串口已经接受到数据
YangHY
发表于 2025-12-28 11:36:28
把接口设置好:
YangHY
发表于 2025-12-28 11:37:17
接着打开虚拟擎天柱:
YangHY
发表于 2025-12-28 11:38:21
先在串口核对一下数据:
04是指P2端口: 0000 100
YangHY
发表于 2025-12-28 11:41:48
流水灯:
u8 P2_STATE = 0X01;
u8 P10_STATE = 0;
// 任务1:P2口流水灯,P10闪烁
void TASK_1( void )
{
// ----------------------- p2端口流水灯 -----------------------
LED40_SetPort(2,~P2_STATE); //点亮P20端口,这个是点亮虚拟的
P2 = P2_STATE;//点亮“擎天柱”,这个是点亮实体的
P2_STATE = (P2_STATE<<1); //1000 0000 -> 1 0000 0000
if( P2_STATE == 0 )
P2_STATE = 1;
// ----------------------- p10端口闪烁 -----------------------
if( P10_STATE == 0 )
LED40_SetBit(1,0);//P10端口输出高电平
else
LED40_ClrBit(1,0);//P10端口输出低电平
P10_STATE = !P10_STATE;
}