lhj
发表于 2023-11-9 14:49:45
前面的汇编听的还是比较吃力的,因为一开始就是接触C语言的,对C还是比较熟悉,整体来说,对运算算法不太了解,确切说是不熟悉,有些运算程序看不太懂,还有一个就是逻辑也不是太明了,这两个方面还是要加强学习,
lhj
发表于 2023-11-9 15:37:40
第十一讲,单片机C语程序设计导入,终于回到C语言了,相对汇编要轻松一点, 之前我开发的一款USB串口键盘用的是STC15W4第列的芯片,最大的亮点就是防解密,我还专门问了下之前帮我们解密芯片的人,他说解不了,哈哈,STC做的确实可以,有时候我们很奇怪,希望自己设计的产品上市后别人破解不了,又希望能解密别人设计的好的产品来缩短新开发周期,STC15系列完美解决。言归正转,学习十一讲的知识点。
C51 对ANSI C的扩展
加了19个关键字 常用的有_at_ (这个常用吗?)
sbit 常用于定义引脚
sfr 特殊功能寄存器
bit 位变量
xdata 拓展RAM
code code FLASH 区域
interrupt 中断
变量类型
新增bit 位型 1bit 0/1
sbit 1 0/1
sfr 8 0x80~0xff
sfr16 8 0x80~0xff
bit 不能声明指针 不能做数组
sbit 在可独立访问位寻址的位
sfr 用来控制定时/计数器 串口 io
sfr P0=0x80;
sbit cy=psw^7
内存区域的制定
code常数,可用于保存数码管码表
RAM
data 直接寻址低 128 BYTE
idata间接寻址RAM 256 BYTE
bdata位寻址 20H~FH
外部数据存储器
xdata外部RAM 大数组可用,
pdata 别用!!! 8032时代选页的,pdata与xdata有冲突
指针
一般和ANSI C一样
很重要,很灵活
硬件相关寄存器指针需要使用volatile 保证不被优化
lhj
发表于 2023-11-9 15:41:19
运算这块要好好学一下,夯实基础!
lhj
发表于 2023-11-9 15:55:24
第十二讲,C语言设计程序导入二,本章节主要学习了闪灯程序和Flsh操作,闪灯的这个理解没问题,之前也学过,Flash操作这个之前没有接触过,到时候收到实验箱要对着视频实际操作一下,加深一下印象。学习例程官网都有,就不上传了。
lhj
发表于 2023-11-10 11:48:47
C语言中的运算符(超全超详细) 今天学习开天斧开发板例程,学到运算,专门找了下资料,发出来供新手学习,一起进步。 目录一、算数运算符二、关系运算符三、逻辑运算符四、位运算符五、赋值运算符六、三目运算符(特殊运算符)七、逗号运算符八、sizeof运算符九、运算符优先级基本的五种1. + 可以是: 常量+常量 , 变量+常量2. -3. *4. / 5/ 2 = 25. % 取余 5 % 2 = 1其中 : 自增运算符(++) 自减运算符( --)只能变量使用 如: NUM++; i++ 先用再加++i先加再用注意事项1. 除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数。2. 对于 / 操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除 法。3. % 操作符的两个操作数必须为整数。返回的是整除之后的余数。>>=<<=!= 用于测试“不相等”== 用于测试“相等”= 用于赋值注意:在编程的过程中一定要注意 == 和 = 的区别&&逻辑与 理解为: 即 怎么又 怎么 一假全假,全真为真|| 逻辑或 理解为: 要么 怎么 要么 怎么 一真为真, 全假为假逻辑非 真取假假取真截断特性:逻辑与左边为假,右边不在读取计算 逻辑或左边为真,右边不在读取计算& //按位与 与0得0| //按位或 或1得1^//按位异或 相同为0,相异为1注:他们的操作数必须是整数。>> 右移 //缩小<< 左移 //放大,左移N位,乘以2^N+=-=*=/=%=>>=<<=&=|=^=这些运算符都可以写成复合的效果。int x = 10;x = x+10;x += 10;//复合赋值//其他运算符一样的道理。这样写更加简洁。exp1 ? exp2 : exp3exp1若为真,则执行exp2,否则执行exp3exp1, exp2, exp3, …expN逗号表达式,就是用逗号隔开的多个表达式。 逗号表达式,从左向右依次执行。整个表达式的结果是最 后一个表达式的结果。sizeof(数据类型/变量) //获取数据类型/变量再内存中的所占字节数括号> 单目运算符> 算术运算符> 移位运算符> 关系运算符 >位运算符> 逻辑运算符 >三目运算符 >赋值运算符> 逗号运算符当运算符优先级一致时,参考结合方向
lhj
发表于 2023-11-10 12:03:45
第十三讲,中断原理和工作机制,本章节主要学习了单片机的中断原理,STC8HK64U共有44个中断源,还学习了解了中断源的控制以及中断标断位等等。需要在实际应用中熟悉加深印象。
中断
单片机执行其他程序 , 出现某些异常事件或请求,cpu 中止,转去执行异常事件,执行完毕,返回继续执行。
中断源
cpu中断请求源
中断响应
cpu暂停工作转去处理中断源事件
中断服务
处理工程
中断返回
处理完返回中断的地方
中断优先级
低优先级会挂起LCALL
保护现场
PUSHPOP 指令 堆栈操作实现
堆栈
先进后出
SP 指向栈顶
中断撤除
中断请求标志位擦除,有的会自己擦除
中断源
stc8h44个
lhj
发表于 2023-11-10 12:51:25
第十四讲,中断原理及工作机制二,紧接上一讲,本讲学习了中断标志位,优先级处理等
中断标志位
PCON
LVDF 低电压检测 不开中断也可以读
SPI
SPSTAT 传输完成置位
ADC
ADC_CONTR A/D转换结束标志位
需要软件清0
中断允许,禁止,优先级
IE 0A8H
EA总中断
0关闭
1开放
ELVD 低压检测
EADC A/D
ES 串口1
ET1 定时器1
EX1 INT1
ET0 T0
EX0 INT0
优先级
00 01 1011对应1234 级
先高后低 停低转高 高不睬低
lhj
发表于 2023-11-10 15:22:30
第十五讲,定时器原理及STC扩展,学习整理如下,理论已经学了,还需多加练习,在实践中运用,慢慢提高
定时器结构
功能 : 定时或计数
分频
可编程输出
串口波特率发生器
一般结构
系统/外部来的时钟 让计数器加1 加满了就中断
工作模式 4种
常用16位自动重载/不可中断的16位自动重载定时器寄存器
TMOD
GATEC/TM1M0 GATEC/T M1M0
M1M0
0 0 模式0 16位自动重载
1 1 模式3 最高中断优先级的16位自动重载
记住这两个模式就行
C/T 1 计数器
0 定时器
GATE 1~INTn搞 且 TRn置位 启动
0 TRn 置位 启动
TCON
TF1TR1 TF0TR0IE1IT1IE0IT0
TF1/0 中断标志位 自动清
TR1/0 开关 置1启动
后面4位是外部中断的
AUXR
T0x12T1x12UART_M0x6T2RT2_C/TT2x12EXTRAMS1T2
T0x12/T1x12 0 12分频
1 不分频
TR2 定时器 2开关 置1启动
T2_C/T 0T2 12个时钟计数1次
1 T21个时钟计数1次
UART_M0x6 串口速度
S1ST2 波特率发生器选择位
T4T3M
T4RT4_C/T T4x12T4CLKOT3RT3_C/TT3x12T3CLKO
T4/T3CLKO时钟输出开关置1开启
lhj
发表于 2023-11-10 15:39:46
本帖最后由 lhj 于 2023-11-10 15:41 编辑
STC 8H8K64U的硬件仿真也是很好用的
lhj
发表于 2023-11-11 08:44:00
lhj 发表于 2023-11-4 09:55
第二讲学习了keil新建工程,了解STC IO 口状态代码,也可以直接用STC ISP生成IO口配置代码,直接复制粘贴到 ...
STC ISP IO配置