找回密码
 立即注册
查看: 30|回复: 8

STC8H-实验指导书:实验内容与源代码

[复制链接]
  • 打卡等级:常住居民II
  • 打卡总天数:80
  • 最近打卡:2025-09-15 15:33:39

6

主题

209

回帖

1234

积分

超级版主

积分
1234
发表于 3 小时前 | 显示全部楼层 |阅读模式
                        
                      STC8H
   
       实验指导书



STC8H-实验指导书》目前收录了22个大类目的实验:
每项实验都经过全流程的验证,
实验文档包含但不限于实验介绍、原理图、源代码、实验过程、实验现象。

2 实验
2.1 实验一:printf_usb("Hello World !\r\n"),第一个完整的C语言程序
2.2 实验二:查询方式,查询到电脑命令后,printfusb(Hello World!\rn")或其他
2.3 实验三:中断方式,单片机USB中断接收服务函数收到命令后,printf usb("Hello World!\rn")或其他
2.4 点灯实验一:点亮LED灯,继续完成前面的工程项目
2.5 点灯实验二:让LED灯闪烁起来
2.6 点灯实验三:通过USB-CDC方式控制STC8H8K64U进行LED点灯
2.7 点灯实验四:使用STC8H8K64U内置USB直接仿真流水灯
2.8 I/O口实验 -- I/O口读取按键状态并点灯
     2.8.5 实验1 -- 位操作,用USB直接仿真来调试
     2.8.6 实验1A -- 使用【AiCube】项目助手实现”位操作,用USB仿真来点灯”
     2.8.7 实验2 -- 整组8位端口操作,用USB直接仿真来调试
     2.8.8 实验2A -- 使用【AiCube】项目助手实现”整组8位端口操作,用USB仿真来点灯“
     2.8.9 实验3 -- 用USB-CDC读取按键状态在串口助手显示并点亮LED灯
     2.8.10 实验3A -- 使用【AiCube】项目助手实现”用USB-CDC读取按键状态在串口助手显示并点亮LED灯
     2.8.11 实验4 -- 用USB-CDC读取按键状态,在ISP软件的【开天斧/居龙刀-LED-DIP64(6)】 虚拟显示
     2.8.12 实验4A -- 使用【AiCube】项目助手实现”用USB-CDC读取按键状态,并在【开天斧/居龙刀-LED-DIP64(6)】 虚拟显示
     2.8.13 实验5 -- I/O口行列按键扫描,蜂鸣器发声实战
2.9 传统外部中断实验 -- INT0INT1INT2INT3
     2.9.1中断实验1(外部中断INTO/P3.2,INT1/P3.3控制点灯并USB仿真)
     2.9.2 中断实验2(单片机主动触发外部中断INT2/P3.6,INT3/P3.7控制点灯并USB仿真)
2.10 定时器实验 -- 定时器0/116位定时器
       2.10.1 定时器0/1,16位定时器实验(定时器中断点灯并通过USB-CDC端口输出信息)
       2.10.2 使用【AiCube】工具实现:定时器0/1,16位定时器实验(定时器中断点灯并通过USB-CDC端口输出信息
       2.10.3 定时器0/1,INTO/INT1,中断组合应用实验,演示程序
2.11 大型综合实战 -- 课程设计:时钟+数码管+矩阵按键+蜂鸣器发声
2.12 RTC实验
       2.12.1RTC实验(拓展学习之使用RTC功能设定闹钟)
       2.12.2 使用【AiCube】助手实现RTC实验(测试RTC,使用USB-CDC打印年/月/日/时/分/秒)
2.13 串口实验 -- 串口通讯(硬件UART1与电脑收发通讯)
2.14 串口实验 -- 串口通讯(硬件UART2UART3收发通讯)
2.15 串口实验 -- 串口通讯(硬件UART2UART3数据透传)
2.16 串口实验 -- 串口1_2_3_4(中断设置标志位,主循环查询),演示实验
2.17 串口实验 -- 串口1_2_3_4+定时器0_1_3_4+外部中断INT0_1_2_3(中断设置标志位,主循环查询),演示实验
2.18 串口实验 -- 串口通讯(串口通讯,串口绘图,ADC检测按键,ADC热敏电阻测温)
2.19 大型综合实战 -- 模拟RTC时钟+数码管+ADC检测按键(查询)
2.20 ADC实验 -- 数码管+ NTC热敏电阻+ADC测温(中断方式)
2.21 大型综合实战 -- 课程设计硬件SPI读写串行Flash
2.22 SPI实验 -- 硬件SPI驱动OLED显示图片、图形、字符

文档目录中有用【AiCube】助手生成的实验项目:
2.8.6   实验1A -- 使用【AiCube】项目助手实现”位操作,用USB仿真来点灯”
2.8.8   实验2A -- 使用【AiCube】项目助手实现”整组8位端口操作,用USB仿真来点灯”
2.8.10 实验3A -- 使用【AiCube】项目助手实现”用USB-CDC读取按键状态在串口助手显示并点亮LED灯”
2.8.12 实验4A -- 使用【AiCube】项目助手实现”用USB-CDC读取按键状态,并在【开天斧/居龙刀-LED-DIP64(6)】 虚拟显示”
2.10.2 使用【AiCube】工具实现:定时器0/1,24位定时器实验(定时器中断点灯并通过USB-CDC端口输出信息
2.12.2 使用【AiCube】助手实现:RTC实验(测试RTC,使用USB-CDC打印年/月/日/时/分/秒)
由于这些实验例程是用当时版本的【AiCube】助手生成,
大家可以用现在最新版本的【AiCube】助手按文档中流程操作,这里就不打包这类实验的项目源代码。

现将目录中实验的源代码按《STC8H-实验指导书》目录顺序,分楼陆续上传至本帖,以供大家参考和交流。

STC8H-实验指导书-20250915.pdf (37.36 MB, 下载次数: 3)
回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:80
  • 最近打卡:2025-09-15 15:33:39

6

主题

209

回帖

1234

积分

超级版主

积分
1234
发表于 3 小时前 | 显示全部楼层
2.1          实验一:printf_usb("HelloWorld !\r\n"),第一个完整的C语言程序
                    看下面的程序,其实还是那个熟悉的标准C语言的printf(),只是到了单片机C语言中,变成了printf_usb()

2.1.1            printf( )printf_usb( )实验程序代码
#include  "stc8h.h"              //头文件不分大小写,但关键字分大小写
#include  "ai_usb.h"            //USB库和USB虚拟设备的头文件,需要在项目文件中添加对应的USB
                                        //由于在USB库函数的代码中已经定义了,不停电ISP下载命令字”@STCISP#”
                                        //只需要在下载软件的“收到用户命令后复位到ISP监控程序区”选项卡中进行相应的设置,
                                        //即可实现USB不停电ISP下载功能,或串口不停电ISP下载功能。

void  main(void)
{
    P_SW2 |= 0x80;     //允许访问扩展的特殊寄存器,XFR

    usb_init();             //初始化USB模块,并且会将【P3.0, P3.1】初始化为高阻输入,不影响USB【D-, D+】通讯
    EA = 1;                 //使能总中断

    while (1)
    {
        printf_usb("Hello World !\r\n");
                              //直接打印输出 “HelloWorld !” 到主机相应软件的USB【CDC/HID-串口助手】
                              //  \r是回车,跳到行首,\n是换行,就是换到下一行;\r\n不要交换次序
    }
}
以上是完整的第一个程序代码

截图202509151545046030.jpg
Project-printf_usb(CDC)1.zip (44.56 KB, 下载次数: 1)

回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:80
  • 最近打卡:2025-09-15 15:33:39

6

主题

209

回帖

1234

积分

超级版主

积分
1234
发表于 2 小时前 | 显示全部楼层
2.2          实验二:查询方式,查询到电脑命令后,printf_usb("Hello World!\r\n")或其他
                     看下面的程序,其实还是那个熟悉的标准C语言的printf(),只是到了单片机C语言中,变成了printf_usb()

2.2.1            printf( )printf_usb( )实验程序代码
#include  "stc8h.h"       //头文件不分大小写,但关键字分大小写
#include  "ai_usb.h"     //USB库和USB虚拟设备的头文件,需要在项目文件中添加对应的USB
                                 //由于在USB库函数的代码中已经定义了,不停电ISP下载命令字”@STCISP#”
                                 //只需要在下载软件的“收到用户命令后复位到ISP监控程序区”选项卡中进行相应的设置,
                                 //即可实现USB不停电ISP下载功能,或串口不停电ISP下载功能。
void main(void)
{
    P_SW2 |= 0x80;     //允许访问扩展的特殊寄存器,XFR


    usb_init();             //初始化USB模块
                                //初始化USB模块,并且会将【P3.0, P3.1】初始化为高阻输入,不影响USB【D-, D+】通讯


    EA = 1;                 //使能全局中断


    while(1)
    {
        if(bUsbOutReady)
        {   //查询方式:USB-Device单片机查询是否有接收完成的USB主机送来的数据包
            //“bUsbOutReady”:主机发送给HID/CDC设备的数据状态标志。
            //USB库中有定义bUsbOutReady位变量,查询方式必须调用一次“usb_OUT_done();”
            //状态位为1表示,主机发送给HID/CDC设备数据已完成,
            //设备已成功接收一包数据,等待对数据继续处理。


                if(UsbOutBuffer[0]==6)
                    printf_usb("HelloWorld!\r\n");        //接收到的数据包的第0个字节是6,打印“HelloWorld!”
                else if(UsbOutBuffer[0]==7)
                    printf_usb("China!\r\n");              //接收到的数据包的第0个字节是7后,打印“China!”


                usb_OUT_done();  //USB查询方式,Device单片机通知【主机可以发下一个数据包】
                                          //当使用査询方式if(bUsbOutReady),查询调用USB库函数时,在数据处理完成后,
                                          //必须调用一次“usb_OUT_done();”,这样才能接收下一包数据。
                                          //如果是使用中断方式调用USB库函数,用户程序不需要调用“usb_OUT_done();”
                                          //中断方式,USB库函数内部会自动处理。
        }
    }
}


截图202509151557479900.jpg
Project-printf_usb(CDC)2.zip (45.04 KB, 下载次数: 1)

回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:80
  • 最近打卡:2025-09-15 15:33:39

6

主题

209

回帖

1234

积分

超级版主

积分
1234
发表于 2 小时前 | 显示全部楼层
2.3          实验三:中断方式,单片机USB中断接收服务函数收到命令后,
                             printf_usb("HelloWorld !\r\n")或其他
                      看下面的程序,其实还是那个熟悉的标准C语言的printf(),只是到了单片机C语言中,变成了printf_usb()

2.3.1            printf( )printf_usb( )实验程序代码
#include  "stc8h.h"              //头文件不分大小写,但关键字分大小写
#include  "ai_usb.h"            //USB库和USB虚拟设备的头文件,需要在项目文件中添加对应的USB
                                        //由于在USB库函数的代码中已经定义了,不停电ISP下载命令字”@STCISP#”
                                        //只需要在下载软件的“收到用户命令后复位到ISP监控程序区”选项卡中进行相应的设置,
                                        //即可实现USB不停电ISP下载功能,或串口不停电ISP下载功能。
                                        // USB接收中断服务程序中,调用用户实际需要执行的服务程序,
                                        // 简称回调函数,用户根据实际应用场景需求编写
void USBLIB_OUT_Callback(void)
{     //用户希望USB库函数,中断方式回调执行的用户自己编写的任务函数,简称回调函数
    if(UsbOutBuffer[0] == 6)
        printf_usb("Hello World !\r\n");
              //接收到数据6后,直接打印输出“Hello World !”到主机相应软件的USB【CDC/HID-串口助手】
              //  \r是回车,跳到行首,\n是换行,就是换到下一行;\r\n不要交换次序
    else if(UsbOutBuffer[0] == 7)
        printf_usb("China !\r\n");
            //接收到数据7后,直接打印输出 “China !” 到主机相应软件的USB【CDC/HID-串口助手】”
}


void main(void)
{
    P_SW2 |= 0x80;     //允许访问扩展的特殊寄存器,XFR

    usb_init();             //初始化USB模块
                                //初始化USB模块,并且会将【P3.0, P3.1】初始化为高阻输入,不影响USB【D-, D+】通讯

    set_usb_OUT_callback(USBLIB_OUT_Callback);  //设置USB中断服务程序可以调用的回调函数
    //此处 USBLIB_OUT_Callback是前面用户自己编写的任务函数的函数名/地址,供USB库函数回调

    EA = 1;                 //使能全局中断

    while (1);
}
以上是完整的第一个程序代码

截图202509151615015649.jpg
Project-printf_usb(CDC)3.zip (45.03 KB, 下载次数: 1)


回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:80
  • 最近打卡:2025-09-15 15:33:39

6

主题

209

回帖

1234

积分

超级版主

积分
1234
发表于 2 小时前 | 显示全部楼层
2.4         点灯实验一:点亮LED灯,继续完成前面的工程项目

2.4.1           原理介绍
                            STC8H8K64U实验箱原理图
                            截图202509151621302201.jpg

I/OP4.0控制PNP三极管的通断,控制这8个灯的整体供电。

如果P4.0输出1,则PNP三极管不导通,这8个灯都不会获得电源,都不会有电流流过,都不会被点亮。
如果P4.0输出0,则PNP三极管导通,这8个灯才有可能会流过电流,才有可能会被点亮。
如果P4.0输出0PNP三极管导通,特定LED灯的控制I/O口如输出0,则该LED灯会有电流流过,会被点亮。

P6.0输出0LED60灯就会被点亮;如P6.0输出1LED60灯就会熄灭;
P6.1输出0LED61灯就会被点亮;如P6.1输出1LED61灯就会熄灭;
P6.2输出0LED62灯就会被点亮;如P6.2输出1LED62灯就会熄灭;
P6.3输出0LED63灯就会被点亮;如P6.3输出1LED63灯就会熄灭;
P6.4输出0LED64灯就会被点亮;如P6.4输出1LED64灯就会熄灭;
P6.5输出0LED65灯就会被点亮;如P6.5输出1LED65灯就会熄灭;
P6.6输出0LED66灯就会被点亮;如P6.6输出1LED66灯就会熄灭;
P6.7输出0LED67灯就会被点亮;如P6.7输出1LED67灯就会熄灭

P6口对外全部送0,则这8个灯全亮;
P6口对外全部送1,则这8个灯全灭

如果P4.0输出1,则PNP三极管不导通,不管P6口对外全部送0或送1,这8个灯都不会有电流流过,都不会亮。
P4.0控制PNP三极管,作为这8LED指示灯的总电源开关。

截图202509151622226891.jpg
Project1-点灯1(Flow Light)-STC8H.zip (20.63 KB, 下载次数: 2)
回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:80
  • 最近打卡:2025-09-15 15:33:39

6

主题

209

回帖

1234

积分

超级版主

积分
1234
发表于 2 小时前 | 显示全部楼层
2.5         点灯实验二:让LED灯闪烁起来

2.5.1           原理介绍
                            STC8H8K64U实验箱原理图

                            截图202509151632334372.jpg

I/OP4.0控制PNP三极管的通断,控制这8个灯的整体供电。

如果P4.0输出1,则PNP三极管不导通,这8个灯都不会获得电源,都不会有电流流过,都不会被点亮。
如果P4.0输出0,则PNP三极管导通,这8个灯才有可能会流过电流,才有可能会被点亮。
如果P4.0输出0PNP三极管导通,特定LED灯的控制I/O口如输出0,则该LED灯会有电流流过,会被点亮。

P6.0输出0LED60灯就会被点亮;如P6.0输出1LED60灯就会熄灭;
P6.1输出0LED61灯就会被点亮;如P6.1输出1LED61灯就会熄灭;
P6.2输出0LED62灯就会被点亮;如P6.2输出1LED62灯就会熄灭;
P6.3输出0LED63灯就会被点亮;如P6.3输出1LED63灯就会熄灭;
P6.4输出0LED64灯就会被点亮;如P6.4输出1LED64灯就会熄灭;
P6.5输出0LED65灯就会被点亮;如P6.5输出1LED65灯就会熄灭;
P6.6输出0LED66灯就会被点亮;如P6.6输出1LED66灯就会熄灭;
P6.7输出0LED67灯就会被点亮;如P6.7输出1LED67灯就会熄灭

P6口对外全部送0,则这8个灯全亮;
P6口对外全部送1,则这8个灯全灭

如果P4.0输出1,则PNP三极管不导通,不管P6口对外全部送0或送1,这8个灯都不会有电流流过,都不会亮。
P4.0控制PNP三极管,作为这8LED指示灯的总电源开关。

截图202509151633112813.jpg
Project2-点灯2(Biling)-STC8H.zip (21.02 KB, 下载次数: 1)
回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:80
  • 最近打卡:2025-09-15 15:33:39

6

主题

209

回帖

1234

积分

超级版主

积分
1234
发表于 2 小时前 | 显示全部楼层
2.6        点灯实验三:通过USB-CDC方式控制STC8H8K64U进行LED点灯

2.6.1          原理介绍
                          STC8H8K64U实验箱原理图
                           截图202509151638508389.jpg

I/OP4.0控制PNP三极管的通断,控制这8个灯的整体供电。
如果P4.0输出1,则PNP三极管不导通,这8个灯都不会获得电源,都不会有电流流过,都不会被点亮。
如果P4.0输出0,则PNP三极管导通,这8个灯才有可能会流过电流,才有可能会被点亮。
如果P4.0输出0PNP三极管导通,特定LED灯的控制I/O口如输出0,则该LED灯会有电流流过,会被点亮。

P6.0输出0LED60灯就会被点亮;如P6.0输出1LED60灯就会熄灭;
P6.1输出0LED61灯就会被点亮;如P6.1输出1LED61灯就会熄灭;
P6.2输出0LED62灯就会被点亮;如P6.2输出1LED62灯就会熄灭;
P6.3输出0LED63灯就会被点亮;如P6.3输出1LED63灯就会熄灭;
P6.4输出0LED64灯就会被点亮;如P6.4输出1LED64灯就会熄灭;
P6.5输出0LED65灯就会被点亮;如P6.5输出1LED65灯就会熄灭;
P6.6输出0LED66灯就会被点亮;如P6.6输出1LED66灯就会熄灭;
P6.7输出0LED67灯就会被点亮;如P6.7输出1LED67灯就会熄灭


P6口对外全部送0,则这8个灯全亮;
P6口对外全部送1,则这8个灯全灭


如果P4.0输出1,则PNP三极管不导通,不管P6口对外全部送0或送1,这8个灯都不会有电流流过,都不会亮。
P4.0控制PNP三极管,作为这8LED指示灯的总电源开关。

截图202509151640163145.jpg
Project3-点灯(USB-CDC方式进行LED点灯)-STC8H.zip (45.8 KB, 下载次数: 1)
回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:80
  • 最近打卡:2025-09-15 15:33:39

6

主题

209

回帖

1234

积分

超级版主

积分
1234
发表于 1 小时前 | 显示全部楼层
2.7        点灯实验四:使用STC8H8K64U内置USB直接仿真流水灯

2.7.1         原理介绍
                         STC8H8K64U实验箱原理图

                         截图202509151649078645.jpg

I/OP4.0控制PNP三极管的通断,控制这8个灯的整体供电。
如果P4.0输出1,则PNP三极管不导通,这8个灯都不会获得电源,都不会有电流流过,都不会被点亮。
如果P4.0输出0,则PNP三极管导通,这8个灯才有可能会流过电流,才有可能会被点亮。

如果P4.0输出0PNP三极管导通,特定LED灯的控制I/O口如输出0,则该LED灯会有电流流过,会被点亮。
P6.0输出0LED60灯就会被点亮;如P6.0输出1LED60灯就会熄灭;
P6.1输出0LED61灯就会被点亮;如P6.1输出1LED61灯就会熄灭;
P6.2输出0LED62灯就会被点亮;如P6.2输出1LED62灯就会熄灭;
P6.3输出0LED63灯就会被点亮;如P6.3输出1LED63灯就会熄灭;
P6.4输出0LED64灯就会被点亮;如P6.4输出1LED64灯就会熄灭;
P6.5输出0LED65灯就会被点亮;如P6.5输出1LED65灯就会熄灭;
P6.6输出0LED66灯就会被点亮;如P6.6输出1LED66灯就会熄灭;
P6.7输出0LED67灯就会被点亮;如P6.7输出1LED67灯就会熄灭

P6口对外全部送0,则这8个灯全亮;
P6口对外全部送1,则这8个灯全灭

如果P4.0输出1,则PNP三极管不导通,不管P6口对外全部送0或送1,这8个灯都不会有电流流过,都不会亮。
P4.0控制PNP三极管,作为这8LED指示灯的总电源开关。

流水灯实验现象:
截图202509151652573727.jpg

截图202509151651187688.jpg
Project4-点灯(STC8H8K64U内置USB直接仿真流水灯)-STC8H.zip (30.43 KB, 下载次数: 1)
回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:80
  • 最近打卡:2025-09-15 15:33:39

6

主题

209

回帖

1234

积分

超级版主

积分
1234
发表于 半小时前 | 显示全部楼层
2.8        I/O口实验-- I/O口读取按键状态并点灯

2.8.1        实验要求
                        可以通过正确设置I/O口模式来读取实验箱上按键的电平,然后根据对应按键的电平来设置LED灯的点亮/熄灭状态。

2.8.2        实验建议
                        STC8H8K64U系列单片机所有的I/O口均有4种工作模式:
                            ü  准双向口/弱上拉(标准8051输出口模式)
                            ü  强推挽输出/强上拉
                            ü  高阻输入(电流既不能流入也不能流出)
                            ü  开漏模式(如果打开内部上拉电阻,就相当于准双向口;如果不加上拉并对外置1,就相当于高阻输入)

                            1)高阻输入模式,内部配有6K上拉电阻;
                                 为了读取外部状态,需要打开内部的6K上拉电阻。

                            2)开漏模式,内部同样配有6K上拉电阻;
                                 打开内部6K上拉电阻后,其功能与准双向口/弱上拉模式相似。

                            3)读取I/O口的外部状态时,可以采用以下三种模式:
                                 准双向口/弱上拉模式:
                                 ===要确保对外输出锁存为1,关闭对内部对外强输出低的MOS管,
                                        才能准确读到外部状态
                                 ===如对外输出锁存为0,则外部被内部对外强输出低的MOS管拉低,
                                        读到的是低电平,不能准确读到外部来的高输入/被内部拉低了

                                 高阻输入模式,每个 I/O 口都有独立的 6K 上拉电阻:
                                 ===为了准确读取外部状态,需要打开内部的 6K 上拉电阻,或外部有上拉能力
                                 ===内部的对外输出锁存器对此模式无效,对外无输出高/低的能力
                                 ===电流流不进来,也留不出去,
                                        高阻输入,无输出能力,不影响外部来的的输入状态

                                 开漏模式,每个 I/O 口都有独立的 6K 上拉电阻:
                                        启用内部 6K 上拉电阻后,其功能与准双向口/弱上拉模式相似
                                 ===要确保对外输出锁存为1,关闭对内部对外强输出低的MOS管,才能准确读到外部状态
                                 ===如对外输出锁存为0,则外部被内部对外强输出低的MOS管拉低,
                                        读到的是低电平,不能准确读到外部来的高输入/被内部拉低了

                            4I/O口对外输出高或低电平时,可以采用以下三种模式:
                                 Ø  准双向口/弱上拉模式;
                                     对外输出低时,相当于强推挽输出低
                                 Ø  强推挽输出模式;
                                 Ø  开漏模式;
                                     在对外输出低电平时,表现为强推挽输出的低电平状态。
                                     在对外输出高电平时,表现为高阻输入状态,此时电流流不进来也流不出去。
                                     如果用来控制LED灯,因为无电流流动,所以LED灯不亮。

                            5P3.2/P3.3/P3.4/P3.5端口均有按键,按下按键可接地,建议:
                                 读取这些I/O口的状态,并将结果输出到P6.2/P6.3/P6.4/P6.5对应的指示灯上。

2.8.3           原理图

2.8.3.1              STC8H8K64U实验箱原理图

                            截图202509151753534561.jpg              截图202509151754222319.jpg              截图202509151754127729.jpg

2.8.3.2              认识STC8H8K64U实验箱
                            截图202509151754589844.jpg

2.8.5          实验1:位操作,用USB直接仿真来调试
            单独读【P3.2/ P3.3 / P3.4 / P3.54个独立I/O的状态,输出到【P6.2 / P6.3 / P6.4 / P6.5】对应的指示灯

2.8.5.1            I/O口设置
                           将不同的I/O口设置为不同的模式,尝试不同情况下依然可以正常输入/输出。打开AiCube-ISP软件:
                           Ü  配置输出端口的P63、P64为推挽输出,P65为开漏输出(可以输出0点亮LED)
                            截图202509151757408675.jpg

                           Ü  输入配置
                               Ø  P30、P31为高阻输入(因为跟USB复用,设置为高阻输入,不干扰USB的通讯控制)
                               Ø  设置P32为准双向口、P33为高阻输入、P34和P35为开漏模式(设置为1等效高阻输入)
                               Ø  开启P33、P34、P35的内部上拉电阻以稳定电平状态(不开启内部上拉电阻读外部状态,高阻输入/开漏模式,外部都需要有上拉电阻配合)
                            截图202509151757557967.jpg

截图202509151800281036.jpg
Project5-IO(位操作)-STC8H.zip (29.75 KB, 下载次数: 0)
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-9-15 18:50 , Processed in 0.135142 second(s), 89 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表