![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C51
文章平均质量分 79
LostSpeed
c++ coder
展开
-
STC15 - C51 - 在中断函数中, 不能再关中断
在集成一些模块代码, 多个模块都使用了同一个中断函数. 就定义了一个中断回调指针给多个模块用.谁用这个回调, 谁就将这个回调赋值为自己实现的回调函数地址.测试了一下, 发现这招虽然好使, 但是会引起其他模块逻辑功能失效.用排除法发现, 在中断中关中断会引起问题. 如果中断回调中有关于计时器重装之类的操作, 就会受影响.所以, 最好不要在中断处理中关全局中断.原创 2022-12-15 17:11:15 · 811 阅读 · 0 评论 -
STC15 - C51 - in the map file, GAP is what ?
在用IAP15F2K61S2写测试程序, 因为内部扩展RAM(X:0x0 ~ X:0x400)不够用了, 看mapfile, 变量已经分配到(X:0x400 ~ X:0x6ff)中了.因为(X:0x400 ~ X:0x6ff)是IAP15F2K61S2自己用的, 一旦自己的逻辑实现读写(X:0x400 ~ X:0x6ff), 就会使单步调试中断, 丢失调试的连接.发现丢失调试连接后, 大概也能猜到用到了(X:0x400 ~ X:0x6ff), 去看map文件, 果真如此.原创 2022-12-12 19:09:27 · 404 阅读 · 0 评论 -
STC15 - C51 - Memory Models
在STC上测试呢, 想看看变量(不同类型的定义)被编译器分配在哪个内存范围(idata, pdata, xdata)?同时, 总结一下降低内存用量的思路(如果像上位机那样内存管够, 就不用考虑内存用量的优化).原创 2022-12-08 15:46:52 · 800 阅读 · 0 评论 -
Keil C51 - ERROR L107: ADDRESS SPACE OVERFLOW
在给一个做好的板子写出厂测试程序. 一共要写20个测试功能.MCU为STC15F2K60S2. 编译器为 MDK5(keil C51)SEGMENT:?DT?DT?ADC可以看到 data 超过了127, xdata不到2048, code不到64K.在网上查了资料, L07的错误原因: 不是RAM超了, 就是ROM超了.我这的情况是data超过了127bytes.原创 2022-11-04 13:00:41 · 6839 阅读 · 0 评论 -
STC - STC15库函数实验 - 用表驱动来实现串口应答
准备用STC15库函数写个板子的测试程序.今天将串口命令的收发的架子整完了, 有点收获.原创 2022-10-31 21:35:23 · 521 阅读 · 0 评论 -
STC - 非标连接的7段数码管赋值
按照STC官方资料(), 做好了STC15实验箱4的板子.解开后, 里面有原理图和程序.第3个例程(03-HC595驱动8个数码管)是数码管的显示例程.在板子上原来按照原理图焊接了共阴极数码管, 只有一部分值显示正确. 查了官方demo, 看到官方给的数码管显示值是共阴极数码管的值, 没错.从网上下载了一个大神写的数码管计算器, 好用, 也能看出代码没错. 给的是共阴极数码管标准的值.先怀疑是数码管问题(接触不好?坏了?焊接的是共阳极的数码管?).原创 2022-10-18 23:16:36 · 473 阅读 · 0 评论 -
C51 - SFR不能作为函数入参传递的解决思路
STC15的板子弄好了, 正在用STC官方封装的STC15库做实验.想将SFR或bit*作为参数给函数, 编译报错, 不允许这么搞.查了资料, 确实这么回事.但是没看到有人说如何解决这个问题.看了STC15官方库的封装, 解决的方法: 传一个index给函数, 在函数中, 根据这个index再操作具体的SFR.原创 2022-10-17 18:58:19 · 490 阅读 · 0 评论