weiweigao2023
发表于 2023-5-8 22:22:40
本帖最后由 weiweigao2023 于 2023-5-8 22:49 编辑
1.5利用移位运算符,在P2口实现二进制流水灯试验。
1.准备工作:
硬件(开天斧三.1核心板+USBtypeC数据线)。
软件(Keil51编程软件+(程序烧录工具stc-isp-15xx-v6.91N)
2.先弄清楚:P2口的I/O口二进制低位和高位对应关系。(很重要)
https://www.stcaimcu.com/data/attachment/forum/202305/07/182436de43s43vqd4f6fpq.png
3.流水灯现象描述:
4.程序里用到的移位运算符(左移:<<;右移:>>。)
5.程序里用到for循环语句,使P2口的灯,自左向右,逐个点亮,再逐个熄灭。
6.程序里用到延时程序(1秒),可以由STC-ISP程序软件工具自动生成。(方法详见1.3点灯编程和试验。)
7.程序打包放在(附件里),程序下载方法,看(1.2编程软件环境设置步骤)。
8.核心程序截图和试验效果如下:
sdwflzg
发表于 2023-5-9 09:16:28
weiweigao2023您好!STC8H8G的 EAXFR=1 访问特殊寄存器使能,编译出错,怎样操作?
weiweigao2023
发表于 2023-5-9 15:48:19
sdwflzg 发表于 2023-5-9 09:16
weiweigao2023您好!STC8H8G的 EAXFR=1 访问特殊寄存器使能,编译出错,怎样操作? ...
EAXFR=1, 访问外部设备时置1,接的外部设备是什么?能说具体一点吗?
sdwflzg
发表于 2023-5-9 16:58:06
没有接外部设备,当用到特殊寄存器时就需要将EAXFR=1,STC32没问题,STC8H编译就会出错。
weiweigao2023
发表于 2023-5-9 21:47:36
sdwflzg 发表于 2023-5-9 16:58
没有接外部设备,当用到特殊寄存器时就需要将EAXFR=1,STC32没问题,STC8H编译就会出错。 ...
P_SW2寄存器的最高位EAXFR 是扩展SFR访问控制使能
如下特殊功能寄存器位于扩展 RAM 区域 访问这些寄存器,需先将 P_SW2 的 BIT7(EAXFR) 设置为 1,才可正常读写。
如果还是不行,您打下面技术电话问一下:
weiweigao2023
发表于 2023-5-9 23:34:47
1.6 按键控制灯的几种方式
sdwflzg
发表于 2023-5-10 09:43:03
本帖最后由 sdwflzg 于 2023-5-10 09:45 编辑
weiweigao2023 发表于 2023-5-9 21:47
P_SW2寄存器的最高位EAXFR 是扩展SFR访问控制使能
如下特殊功能寄存器位于扩展 RAM 区域 访问这些寄存 ...
非常感谢
P_SW2 |= 0x80;
这样就可以了
weiweigao2023
发表于 2023-5-10 22:40:56
1.7按键消抖的两种方法:机械消抖和软件延时消抖。
(1)为什么要进行按键消抖? 因为按键在按下和松开的瞬间,会产生抖动;且单片机的运行速度非常快,所以IO口会检测到多个高低电平,导致程序不能正常执行。所以在使用按键时,要考虑消除按键抖动对程序的影响。
(2)按键消抖的方法?机械消抖:用可靠的动作灵活的按键,在按键的两侧并联一个电容,利用电容储能削峰的特性,减少按键抖动对程序的影响。(适合少量按键消抖,麻烦,成本高)
软件延时消抖:一般按键按下或者松开的时间在5-10ms,所以,在设计程序时,对按键按下到稳定的时间,做一个延时等待时间(约10ms)。(适合多个按键消抖,简单实用。)
(3)软件延时消抖 程序举例;if(key_S6==0) //如果检测到按键按下。{delay 10ms(); //延时10毫秒 if (key_S6==0) //再次检测按键是否按下? { ******** //按键按下需要执行内容。 while(!key_S6); //松手检测,如果按键未松开,程序停在此处等待。 }}
weiweigao2023
发表于 2023-5-10 22:51:46
本帖最后由 weiweigao2023 于 2023-5-10 22:58 编辑
1.8 用按键控制P2口的跑马灯
实践编程案例:用板子上的S6按键,控制P2口的跑马灯。(1)程序描述:当S6按键每按下1次,P2口上的灯,自右向左,交替亮灭,至最左侧时,再自左向右,交替亮灭,到最右侧时,再循环往复。(2)跑马灯现象分析:
(3)核心程序截图:
(4)板子视频效果展示,如下:
wsyy1998
发表于 2023-5-11 08:50:23
绝对保姆级教程!{:handshake:}