今天这文章写的很水,看官莫喷。最近写NXP的东西感觉力不从心,重新把51撸一次找找感觉。起名字好难。 就这板子 技术资料连接,敬请下载:链接:
https://pan.baidu.com/s/1esryJhne-oYHOAImTc0gvA 提取码:8888 原理图 去官网还看见了这 还有招聘 手贱搜索了一下这个东西: 提问 开始喷 这,单片机这种东西学会一个,再学一个就没有什么难度了 这里放郭老师得板子资料(我现在的一个群里就有郭老师。。。天天发视频,不知道该怎么说) STC89C52RC+,妥了 然后添加一下头文件 C:\Keil_v5\C51\INC\STC 接着在这里就可以看到了 选择的时候就会有了 添加一下启动头在里面 STARTUP.A51 这个文件有什么用,有必要添加到工程吗?
启动文件. 清理RAM.设置堆栈等.即执行完start.a51后跳转到.c文件的main函数。这些初始化完毕后,还会设置SP指针。对非变量区域,如堆栈区,将不会有赋值或清零动作。 有人喜欢改startup.a51,为了满足自己一些想当然的爱好,这是不必要的,有可能错误的。比如掉电保护的时候想保存一些变量,但改startup.a51来实现是很笨的方法,实际只要利用非变量区域的特性,定义一个指针变量指向堆栈低部:0xff处就可实现。为什么还要去改? 可以这么说:任何时候都可以不需要改startup.a51,如果你明白它的特性。 Startup code:启动代码。 在Keil中,启动代码在复位目标系统后立即被执行。启动代码主要实现以下功能: (1) 清除内部数据存储器 (2) 清除外部数据存储器 (3) 清除外部页存储器 (4) 初始化small模式下的可重入栈和指针 (5) 初始化large模式下的可重入栈和指针 (6) 初始化compact模式下的可重入栈和指针 (7) 初始化8051硬件栈指针 (8) 传递初始化全局变量的控制命令或者在没有初始化全局变量时给main函数传递命令。 关于书籍我推荐一本: 微信可读。 ISP功能是串口传输程序的功能 看TX,RX ISP就是检测P3.0这个口子是不是有合法的下载命令流 接的晶振 (小声bb,我不是学这东西出身的。。。)
寻址的意思就是定位一个要操作的地址。 位类型是定义位变量,就0,1.,可以坐函数的入口参数和返回值。 sfr,8个字节位一位,定义内部的所有的8位特殊功能寄存器,占用一个内存单元。 取值为0~255. sfr16的占用两个内存单元。 sbit的三种用法:
DATA区,数据段使用,直接寻址,访问速度快,但是哇有点小 SMELL模式,都在内部存储区,速度快,地方小。二是紧凑模式,变量都在XDATA内,大大模式,访问有点慢。 内部有4个不同的工作寄存器组,每组里面8个(R0~R7),运行的时候只有一组寄存器在用,发生中断的时候,切换寄存器的组,然后为了当前的寄存器组不发生数据覆盖。相当于我6个电脑,一个软件开一个电脑。实现了现场保护和恢复断点的功能。 记得添加 #include "STC89C5xRC.H" void main() { P0 = 0xFE; while (1) ; } 写自己的晶振数 HEX打勾 STC官方的烧录工具 是我土狗了,需要开关电源才可以下载。 #include "STC89C5xRC.H"
void delay(unsigned int t); void main() { while (1) { P2 = 0xFC; // p2.0~p2.1 delay(500); P2 = 0xFF; // p2口全低电平 delay(500); }; } void delay(unsigned int t) { unsigned int x, y; for (x = t; x > 0; x--) { for (y = 110; y > 0; y--) { } } } 可以调试,哪些看不起51的人,我也不知道咋想的。。。 本文的参考资料: https://www.stcmcudata.com/ https://blog.csdn.net/dldw8816/article/details/42266193 http://www.stcmcudata.com/datasheet/stc/STC-AD-PDF/STC89C51RC-RD.pdf http://www.stcmcudata.com/STCISP/stc-isp-15xx-v6.88L.zip https://github.com/wongsyrone/STC89C52RC |
|