用STC单片机的朋友请进,凡实验并报告结果者赠送100芯币,斑竹无虚言

2019-03-24 19:49发布

首先,我想说,以下我说的这件事情,实在有点匪夷所思,大家可以认为是我糊涂了,或者喝醉了也不无不可(的确,刚才我郁闷了半天的确是买了一罐啤酒在喝)但是,我所看到的现象实在让我难以理解,所以请大家帮个忙,做做实验。我现在手上有3500多芯币,也就是说,我的芯币足以支付给35个朋友,而且我保证绝对不食言。事实上,这并不是一个很复杂的实验。
首先要求,你使用的51单片机最好是STC12C2052或者STC12C2052AD。至于用其他STC型号的朋友,我也会酌情考虑给芯币(我这个招集贴有点狠了,所以估计未来几日内我会瞬间破产,请大家原谅。)帖子标题不是骗人,只是有80字限制,我只能把具体型号压在这里
以下是程序,你会惊讶它如此简单。是的,我希望所有人都会发帖恶狠狠地骂我脑子给驴踢了。
#include<reg52.h>
sfr SPSTAT = 0x84;  //这就是一个简单的定义:定义SFR里地址为0x84的一个寄存器为SPSTAT,是的,如果你做过SPI通信你就知道,它是SPI三个寄存器之一,事实上,这次我正是在做SPI通信。
void main(void){ SPSTAT = 0xF3;   //简单的赋值       P1 = SPSTAT;          //通过P1口的流水灯,我只是想看一下0xF3而已...}
好了,在你做实验以前,是该让你知道,为啥我会发这么一个贴,并给出一个这么脑残的程序让大家测试了。
事情如我注释里所说,我本来在做SPI的通信,这是准备用在nRF24L01的操作里的,因为我没有做过SPI的,我决定先做一下SPI,确定我能通过SPI把数据传递出去(我在两个2052之间做通信)
可是,现在你们请忽略以上这些背景,因为,到最后,也是刚才,我做的只有一件事情。就是跑上面那个只有三句代码的破程序。
你猜猜我看到的P1流水灯是怎么个亮法?好吧我告诉你——全亮!全亮!!!我多希望我瞎了!!!我又尝试了一下把SPSTAT这个寄存器赋予其他地址,比如它附近的0x83,0x87,甚至在pdf里,空定义的0x80.我也试过,可是它们好好的,就是亮了两个灯(第3 和 第4位,当然是从LSB开始数起)
我开始产生一种奇怪的想法,当然这种想法,因为有过太多次的惨痛经验,我不敢说出来,也不敢去相信。但是我还是试了,我换了一块STC12C2052AD。(这是同一个系列的,差别只在多了一个AD,而且PDF里也是放在一起说的。)
可是,实验的结果一模一样!
面对这样的结果,我真的不知道该做何感想......但也许我真的糊涂了——是的,我经常犯一些极端的弱智错误,所以,我诚心诚意发帖,请求大家帮忙,测试测试。看看程序,也许你能一下看出问题何在。
对了,我们差点忘记,老姚在pdf里常说的一句话。说“STC的速度实在太快了,所以可能IO口的变化来不及......."那么,我又加试了下面这个程序#include<reg52.h>
sfr SPSTAT = 0x84;
void main(void){    char i = 0; SPSTAT = 0xF3;    for(i = 0; i < 40;i++)    {}       P1 = SPSTAT;    while(1);}我可以告诉你,结果一模一样
我想起,我之前忘了在第一个程序里加一个死循环,让单片机停在那里,嗯嗯......很值得怀疑哦(是吗?)没关系,我也给你试试#include<reg52.h>
sfr SPSTAT = 0x84;
void main(void){   SPSTAT = 0xF3;          P1 = SPSTAT;    while(1);
}
不好意思,我也希望它的结果会不一样......

-=----------------好了,童鞋们,大叔们,阿姨们,姐姐们......请帮我做这样一个实验吧.小弟无以为报,但还有3500个芯币。(当然了,你如果有兴趣,还可以把那128个RAM地址全试一遍,也许你会有更多新发现。当然,我也更希望,老姚会看到这个帖子,然后指教一下我这个后生,犯了什么错误)



此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
leang521
1楼-- · 2019-03-25 16:52
STC的SPI有个东西需要设置下,我明天到公司看下程序,之前我遇到过这个问题
libin200899
2楼-- · 2019-03-25 18:42
 精彩回答 2  元偷偷看……
辛昕
3楼-- · 2019-03-25 19:44
所咖!!
辛昕
4楼-- · 2019-03-26 01:17
我看我就是撞到那地方上去了.....
dongfengxiao
5楼-- · 2019-03-26 06:22
我今年大三了,马上放暑假了。不考研,想找一个电子类的公司实习、打零工。各位大侠有相应的帮帮忙啊
leang521
6楼-- · 2019-03-26 08:52
好吧,我承认,辛昕你脑子被驴踢了,连带把我也忽悠了,让你讲的一愣一愣的,我无语啊。
仔细看好了。SRSTART里面有两个有效的标志位,其上电初始值为0X00,两个标志位分别为SPIF和WCOL,然后无论你向任一个标志写1则清零,即使你写0它还是0,记得,是0,是0是000,也就是说其值是0x00,知道么,全是0,也就是说,正常情况下,LED是阴极向管脚的,如果管脚是0,也就是低电平,那么它当然是亮的,知道么,是0.。。。。。

一周热门 更多>