找回密码
 立即注册
楼主: kaily

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

[复制链接]
  • 打卡等级:常住居民II
  • 打卡总天数:81
  • 最近打卡:2025-09-16 09:20:45

6

主题

222

回帖

1264

积分

超级版主

积分
1264
发表于 昨天 09:41 | 显示全部楼层
2.8         I/O口实验-- I/O口读取按键状态并点灯

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


2.8.9         实验3:用USB-CDC读取按键状态在串口助手显示并点亮LED

2.8.9.1      实验介绍
  
                         Ü  电脑AiCube-ISP软件中的,USB-CDC串口助手通知单片机读【P3.2/P3.3/P3.4/P3.5】的状态,
                             送回USB-CDC串口助手显示,同时将相应的状态送到LED【P6.2/P6.3/P6.4/P6.5】显示(点亮/熄灭)

                         Ü  通过USB-CDC接口在串口助手接收窗口能直观的查看到对应端口的状态,并且提示点亮/熄灭了对应的LED灯。

截图202509160941389984.jpg
Project7-IO(USB-CDC串口助手显示)-STC8H.zip (39.18 KB, 下载次数: 1)
回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:81
  • 最近打卡:2025-09-16 09:20:45

6

主题

222

回帖

1264

积分

超级版主

积分
1264
发表于 昨天 10:09 | 显示全部楼层
2.8         I/O口实验-- I/O口读取按键状态并点灯

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



2.8.11        实验4:用USB-CDC读取按键状态,在ISP软件的【开天斧/屠龙刀-LED-DIP64(6) 虚拟显示

                                             电脑AiCube-ISP软件中的,USB-CDC串口助手通知单片机读【P3.2/P3.3/P3.4/P3.5】的状态,
                                             送到AiCube-ISP 软件中的【调试仿真接口 | 开天斧/屠龙刀-LED-DIP64(6)】虚拟显示,
                                             同时将相应的状态送到LED【P6.2/P6.3/P6.4/P6.5】显示(点亮/熄灭)。

2.8.11.1     通信协议

                                             AiCube-ISP软件界面的“调试仿真接口”à“接口协议及帮助”àDIP64封装LED接口
                                              截图202509161007525993.jpg

2.8.11.2     实验介绍

                                             通过USB-CDC接口在“开天斧/屠龙刀-LED-DIP64(6)”能直观的查看到对应端口的状态,并且点亮/熄灭了对应的LED灯。

截图202509161008474692.jpg
Project8-IO-LED(USB-CDC-开天斧屠龙刀)-STC8H.zip (47 KB, 下载次数: 1)

回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:81
  • 最近打卡:2025-09-16 09:20:45

6

主题

222

回帖

1264

积分

超级版主

积分
1264
发表于 昨天 10:33 | 显示全部楼层
2.8           I/O口实验-- I/O口读取按键状态并点灯

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



2.8.13          实验5:I/O口行列按键扫描,蜂鸣器发声实战

2.8.13.1      实验介绍

           用行列扫描方法扫描248按键的矩阵式键盘,按键按下时驱动蜂鸣器发声,
           同时通过USB-CDC将按下按键的键码发到【CDC/HID-串口助手】显示。

                               Ü  按键扫描说明:
              1个按键要判断为正常按下,而不是抖动,
              假定需要该按键保持按下持续保持为低状态时间是50ms ~ 200ms
              假定1个主循环的运行时间大概 10ms ~ 30ms
              则如发现某个按键按下,需要连续 6次主循环都能读到该按键按下
                                   ===如发现多个按键按下,则归0,重新开始
              调整按键的灵敏度只需要修改,
                                   ===【判断按键已按下的时间,即读到为低经历了多少次主循环的次数】


2.8.13.2      原理图
                               截图202509161031459124.jpg        截图202509161031564952.jpg


截图202509161033134917.jpg
Project9-IO实战行列矩阵按键扫描-STC8H.zip (45.94 KB, 下载次数: 1)
回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:81
  • 最近打卡:2025-09-16 09:20:45

6

主题

222

回帖

1264

积分

超级版主

积分
1264
发表于 昨天 11:05 | 显示全部楼层
2.9           传统外部中断实验 -- INT0INT1INT2INT3


2.9.1             中断实验1(外部中断INT0/P3.2,INT1/P3.3控制点灯并USB仿真)

                               1、   了解传统的外部中断INT0/P3.2,INT1/P3.3的使用
                               2、   了解STC8H8K64U对传统外部中断INT0/P3.2,INT1/P3.3功能的扩展
                               3、   学习使用USB进行仿真
                               4、   学习使用在中断中设置标志位,在主循环中查询并处理中断事件的处理方式


2.9.1.1          实验介绍

                               1,边缘触发中断,INT0/P3.2 外部中断实验演示程序:
                                             P3.2设置为高阻输入
                                     或     P3.2设置为准双向口
                                             INT0/P3.2设置为边缘触发中断。
                                    【实验步骤】:
                                             Ø   先点击Run(运行)按钮,按下P3.2按键,保持不松开(为了验证下一步的实验),
                                                  进INT0中断后,读到INT0/P3.2口是 低,下降沿,点亮 P6.7,退出中断服务程序。
                                             Ø   点击Run(运行)按钮,松开P3.2按键
                                                  进INT0中断后,读到INT0/P3.2口是 高,上升沿,点亮 P6.0,退出中断服务程序。
                                             Ø   利用仿真,可以设置运行到断点处,捕捉当前程序运行到哪,是下降沿,还是上升沿

                               2,下降沿触发中断,INT1/P3.3 外部中断实验演示程序:
                                             P3.3设置为高阻输入
                                     或     P3.3设置为准双向口
                                             INT1/P3.3设置为下降沿触发中断。
                                   【实验步骤】:
                                             Ø   先点击Run(运行)按钮,按一下P3.3按键
                                                  进INT1中断后,点亮 P6.4,退出中断服务程序。
                                             Ø   利用仿真,可以设置运行到断点处,捕捉当前程序运行到哪。


2.9.1.2          原理图

                               Ø  外部中断【INT0/P3.2,INT1/P3.3】输入原理图@STC8H8K64U实验箱
                                    将[INT0/P3.2,INT1/P3.3]设置为:高阻输入
                                                                             或     准双向口
                                                                             或     开漏模式
                                   [INT0/P3.2,INT1/P3.3]设置为边缘触发中断。

                                     截图202509161103291387.jpg


                               Ø  外部中断实验辅助显示LED灯原理图
                                     截图202509161103406432.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指示灯的总电源开关。

截图202509161104311074.jpg
Project10-中断(外部中断INT0和INT1控制点灯并USB仿真)-STC8H.zip (17.51 KB, 下载次数: 1)
回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:81
  • 最近打卡:2025-09-16 09:20:45

6

主题

222

回帖

1264

积分

超级版主

积分
1264
发表于 昨天 11:43 | 显示全部楼层
2.9           传统外部中断实验 -- INT0INT1INT2INT3

2.9.2             中断实验2(单片机主动触发外部中断INT2/P3.6,INT3/P3.7控制点灯并USB仿真)
  
                               1、   了解STC8H8K64U新增的外部中断INT2/P3.6,INT3/P3.7功能
                               2、   学习使用USB进行仿真
                               3、   学习使用在中断中设置标志位,在主循环中查询并处理中断事件的处理方式


2.9.2.1          实验介绍
  
                                1,下降沿触发中断,单片机内部主动触发INT2/P3.6口,产生中断实验演示程序:
                                             P3.6设置为高阻输入,打开内部上拉电阻
                                     或     P3.6设置为准双向口,打开内部上拉电阻
                                             INT2/P3.6固定为下降沿触发中断
                                2,下降沿触发中断,单片机内部主动触发INT3/P3.7口,产生中断实验演示程序:
                                             P3.7设置为高阻输入,打开内部上拉电阻
                                     或     P3.7设置为准双向口,打开内部上拉电阻
                                             INT3/P3.7固定为下降沿触发中断
                              【实验步骤】:
                                     Ø 先点击Run(运行)按钮,运行到单片机内部主动触发INT2/P3.6时,会进入INT2中断,点亮 P0.0灯,退出中断服务程序,继续运行。
                                     Ø 运行到单片机内部主动触发INT3/P3.7口时,会进入INT3中断,点亮P6.7灯,退出中断服务程序。
                                        利用仿真,可以设置运行到断点处,捕捉当前程序运行到哪。


2.9.2.2          原理图
   
                                Ø  外部中断【INT2/P3.6,INT3/P3.7】实验原理图@STC8H8K64U实验箱
                                    在本实验中,【INT2/P3.6,INT3/P3.7】没有设计外部按键输入,而采用内部将【INT2/P3.6,INT3/P3.7】拉低产生下降沿的方式产生中断的方法。
                                   【INT2/P3.6,INT3/P3.7】工作在准双向口/开漏模式时,输出是独立的,输入也是独立的,
                                   【INT2/P3.6,INT3/P3.7】对外输出低后,【INT2/P3.6,INT3/P3.7】读到的外部状态就是低;
                                    输出高,在打开内部上拉电阻或有上拉电阻的状态下,读到的就是高,除非外界有强行拉低的电路。
                                     截图202509161140581540.jpg 截图202509161140097133.jpg

                                Ø  外部中断实验辅助显示LED灯原理图:
                                     截图202509161141263614.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指示灯的总电源开关。

截图202509161142389522.jpg
Project11-中断(单片机主动触发INT2和INT3控制点灯并USB仿真)-STC8H.zip (23.6 KB, 下载次数: 1)

回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:81
  • 最近打卡:2025-09-16 09:20:45

6

主题

222

回帖

1264

积分

超级版主

积分
1264
发表于 昨天 14:21 | 显示全部楼层
2.10          定时器实验 -- 定时器0/116位定时器


2.10.1             定时器0/1,16位定时器实验(定时器中断点灯并通过USB-CDC端口输出信息)
  
                                  1、   了解传统的定时器0,定时器1的使用
                                  2、   了解STC8H8K64U对定时器0,定时器1功能的扩展(增加16位自动重载模式)
                                  3、   学习使用USB-CDC和电脑进行数据传输
                                  4、   学习使用在中断中设置标志位,在主循环中查询并处理中断事件的处理方式


2.10.1.1          实验介绍

                                  定时器0Timer0)定时2s产生中断,P60灯闪烁,CDC窗口显示“Timer0!”
                                  定时器1Timer1)定时500ms产生中断,P67灯闪烁,CDC窗口显示“Timer1!”
                                  实验现象:
                                         Ü   AiCube-ISP软件的CDC窗口每显示4次“Timer1”,显示1次“Timer0”
                                         Ü   实验箱,P67亮灭各2次,P60亮1次


2.10.1.2          原理图

                                   Ü  定时器0模式0结构图:模式下定时器/计器0作为可动重装载的16位计数器如下图所示
                                        截图202509161418513207.jpg

                                   Ü  定时器1模式0结构图:模式下定时器/计器1作为可动重装载的16位计数器如下图所示
                                        截图202509161419298275.jpg

                                   Ü  LED指示灯原理图
                                       P6口都有单独的指示灯
                                        截图202509161419537708.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指示灯的总电源开关。

截图202509161420453439.jpg
Project12-定时器(定时器中断点灯并通过USB-CDC端口输出信息)-STC8H.zip (45.71 KB, 下载次数: 1)
回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:81
  • 最近打卡:2025-09-16 09:20:45

6

主题

222

回帖

1264

积分

超级版主

积分
1264
发表于 昨天 14:54 | 显示全部楼层
2.10          定时器实验 -- 定时器0/116位定时器


2.10.3             定时器0/1,INT0/INT1,中断组合应用实验,演示程序

                                  学习使用在多个不同的中断中设置标志位,在主循环中查询并处理中断事件的处理方式



截图202509161453382915.jpg
Project-定时器(定时器0,定时器1,INT0,INT1,中断组合应用实验,演示程序-STC8H.zip (31.31 KB, 下载次数: 1)
回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:81
  • 最近打卡:2025-09-16 09:20:45

6

主题

222

回帖

1264

积分

超级版主

积分
1264
发表于 昨天 15:36 | 显示全部楼层
2.11           大型综合实战 -- 课程设计:时钟+数码管+矩阵按键+蜂鸣器发声

2.11.1              实验介绍

                                    1、熟悉矩阵式按键扫描方法
                                    2、了解使用P6P7口控制LED数码管
                                    3、软件模拟RTC,实现RTC的时、分、秒控制和设置
                                    4I/O控制有源蜂鸣器发声
                                    5、扩展部分:如何实现长按键
                                    6、熟悉STC8H8K64U实验箱布局及电路图
                                    7、熟练使用AiCube-ISP系统软件
                                    8、熟悉如何管理多文件项目


2.11.1.1           按键扫描说明

                                   如按键要判断为正常按下,而不是抖动,需要该按键保持按下持续保持为低状态时间是20ms ~ 50ms
                                   主循环中有个1ms的时间基准,将按键扫描程序作为1ms事件,按键状态维持20ms不变,即可对按键去抖动,得到稳定的键码。


2.11.1.2           实验现象和操作说明

                                   将本项目的HEX文件下载到STC8H8K64U的实验箱后
                                   1、在LED数码管上面高6位会动态显示当前的RTC时间
                                   2、按下两行4列的8个矩阵按键后:
                                        Ø  在LED数码管的最低位会显示当前的按键键码
                                        Ø  同时按键会发出按键音
                                           (特别注意:STC8H8K64U实验箱上的蜂鸣器是有源蜂鸣器)
                                        截图202509161534287534.jpg                                  
                                   3、矩阵按键中的按键0,是RTC模式设置键
                                        Ø  上电后RTC为正常工作模式,此时数码管动态显示RTC时间
                                        Ø  按一次按键0,RTC会切换为小时设置模式,此时RTC的小时值会0.5秒闪烁一次
                                        Ø  再按一次按键0,RTC会切换为分钟设置模式,此时RTC的分钟值会0.5秒闪烁一次
                                        Ø  再按一次按键0,RTC会切换为秒钟设置模式,此时RTC的秒钟值会0.5秒闪烁一次
                                        Ø  在按一次按键0,恢复为RTC正常工作模式
                                   4、矩阵按键中的按键4和5分别是上调键和下调键
                                        Ø  只有在RTC的时/分/秒设置模式时,上调键和下调键才有效
                                   5、时钟设置模式时,长按按键4和5,可实现快速设置功能


2.11.1.3           Keil环境下多文件项目管理说明

                                   当项目的功能比较复杂时,就需要在Keil中建立多文件项目,以方便分工合作、代码复用、模块化管理、增强可读性和可维护性
                                        Ø  比较好的建议是将项目功能模块化,不同模块的实现代码放在不同的.c文件中。
                                        Ø  一般建议是一个模块对应一个.c程序文件和一个.h头文件
                                        Ø  模块的初始化函数以及相关的数据处理函数都在.c文件中实现
                                        Ø  与模块相关的全局变量也必须在.c文件中进行定义,一定不能在.h文件中定义变量
                                        Ø  如果有其他模块需要使用本模块定义的变量或函数,则这些函数和变量都需要在.h文件中声明。
                                        Ø  特别提醒:在.h文件中声明外部变量必须使用extern关键字,否则就变成变量定义了,这样会出现变量重复定义的错误
                                        Ø  为防止头文件被多次包含而产生错误或者警告,在头文件中使用类似如下的条件编译组合语句,可避免在同一个.c文件中对同一个.h头文件进行多次包含:
                                                  #ifndef XXXX
                                                  #define XXXX
                                                  ...
                                                  #endif


2.11.2             原理图     

截图202509161531359588.jpg    截图202509161531476062.jpg

截图202509161531582468.jpg    截图202509161532078198.jpg


截图202509161535034501.jpg
Project-定时器(实战--时钟 数码管 矩阵按键扫描 蜂鸣器发声)-STC8H.zip (297.83 KB, 下载次数: 1)
回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:81
  • 最近打卡:2025-09-16 09:20:45

6

主题

222

回帖

1264

积分

超级版主

积分
1264
发表于 昨天 16:05 | 显示全部楼层
2.12          RTC实验

2.12.1             RTC实验(拓展学习之使用RTC功能设定闹钟)

2.12.1.1          实验介绍

                                    1、学习使用STC8H8K64URTC实时时钟功能
                                    2、学习使用STC8H8K64URTC的闹钟功能
                                    3、使用拓展中断号工具解除Keil32个中断号的限制
                                    4、熟练使用USB-CDC功能
                                    5、熟练使用AiCube-ISP软件

                                   【实验现象】:
                                             程序运行约5s后,AiCube-ISP软件的CDC窗口显示“RTCStart”,RTC闹钟10s产生中断,打印数据在CDC窗口显示“Alarm!”
                                             CDC串口发送任意数据,读取RTC的秒值,并在CDC窗口显示
                                             观察到实验现象:
                                                   Ü  程序运行5s后,AiCube-ISP软件CDC的接收缓冲区窗口显示“RTC Start”,再10s后,窗口显示“Alarm!”
                                                   Ü 在USB-CDC串口发送任意数据,在CDC的接收缓冲区窗口显示当前的RTC秒值

2.12.1.2          原理图
                                  截图202509161601092536.jpg

截图202509161601594195.jpg
Project13-RTC(拓展学习之使用RTC功能设定闹钟)-STC8H.zip (23.04 KB, 下载次数: 1)
回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:81
  • 最近打卡:2025-09-16 09:20:45

6

主题

222

回帖

1264

积分

超级版主

积分
1264
发表于 昨天 16:28 | 显示全部楼层
2.13           串口实验 -- 串口通讯(硬件UART1与电脑收发通讯)

2.13.1              实验介绍

                                    1、  了解串口1/UART1通讯原理
                                    2、  熟悉STC8H8K64U实验箱及其原理图
                                    3、  熟练使用AiCube-ISP软件
                                    4、  熟悉如何管理多文件项目

2.13.1.1           认识STC8H8K64U实验箱

                                    STC8H8K64U的实验箱正面图:
                                     截图202509161625441154.jpg                               
                                    J6:     串口1接口。本实验需要用专门定制的USB转串口/TTL(连接USB Link1D工具) - TypeC(连接实验箱J6)接口线相连。(详见J6原理图)

2.13.1.2           专门定制的USB转串口/TTL - TypeC接口线
                                     截图202509161625576079.jpg

2.13.1.3           USB Link1D工具
                                     截图202509161626087285.jpg

2.13.1.4            STC8H8K64U实验箱由TTL - TypeC接口线通过USB Link1D工具与电脑连接图
                                     截图202509161626161226.jpg

2.13.1.5           Keil环境下多文件项目管理说明

                                    当项目的功能比较复杂时,就需要在Keil中建立多文件项目,以方便分工合作、代码复用、模块化管理、增强可读性和可维护性
                                          Ø   比较好的建议是将项目功能模块化,不同模块的实现代码放在不同的.c文件中。
                                          Ø   一般建议是一个模块对应一个.c程序文件和一个.h头文件
                                          Ø   模块的初始化函数以及相关的数据处理函数都在.c文件中实现
                                          Ø   与模块相关的全局变量也必须在.c文件中进行定义,一定不能在.h文件中定义变量
                                          Ø   如果有其他模块需要使用本模块定义的变量或函数,则这些函数和变量都需要在.h文件中声明。
                                          Ø   特别提醒:在.h文件中声明外部变量必须使用extern关键字,否则就变成变量定义了,这样会出现变量重复定义的错误
                                          Ø   为防止头文件被多次包含而产生错误或者警告,在头文件中使用类似如下的条件编译组合语句,可避免在同一个.c文件中对同一个.h头文件进行多次包含:
                                                #ifndef XXXX
                                                #define XXXX
                                                ...
                                                #endif


2.13.2               原理图
                                     截图202509161626285071.jpg

截图202509161626574661.jpg
Project-串口通讯(硬件UART1与电脑收发通讯)-STC8H.zip (9.92 KB, 下载次数: 1)
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-9-17 09:31 , Processed in 0.127648 second(s), 93 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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