打印

单片机中毒了?

[复制链接]
3100|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
望宙风舟|  楼主 | 2011-5-14 13:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
刚才给STC12C2052的单片机烧写了个用定时器T0和T1来分别控制两个LED的周期闪烁。实现了。但现在给它写其他的程序时却写不进去了?而且这个定时的程序也似乎被擦掉了。这是问什么啊?单片机是不是中毒,坏了?
评分
参与人数 1威望 +1 收起 理由
djt2677 + 1

相关帖子

沙发
lyjian| | 2011-5-14 14:21 | 只看该作者
是把里面的ISP程序也擦掉了吧

使用特权

评论回复
板凳
望宙风舟|  楼主 | 2011-5-14 14:29 | 只看该作者
那该怎么办啊?

使用特权

评论回复
地板
老鱼探戈| | 2011-5-14 15:25 | 只看该作者
ISP的下载程序没那么容易被你擦除的,楼主还是看看是不是你烧录方法有问题,或者烧录过程中突然的问题导致原来的程序被损坏。

使用特权

评论回复
5
chunyang| | 2011-5-14 23:22 | 只看该作者
应该是楼主的操作问题,另外注意2052只有2K的程序存储空间,如果你的代码量大于2K自然无法写入。

使用特权

评论回复
6
望宙风舟|  楼主 | 2011-5-15 19:11 | 只看该作者
我的操作没有问题吧,代码不大,才270字节。换了两块下载这个程序的时候,也出现问题了。而最后我用第三块下载以前的程序时,是可以的。真的很郁闷的哦

使用特权

评论回复
7
chunyang| | 2011-5-15 23:45 | 只看该作者
那就看看本振选择是否正确,该型号可以选择内置RC振荡器或外置晶体振荡器,不要搞错,再有就是复位要可靠。

使用特权

评论回复
8
hbeslzy| | 2011-5-16 09:42 | 只看该作者
呵呵,学到了一些东西。

使用特权

评论回复
9
望宙风舟|  楼主 | 2011-5-16 22:32 | 只看该作者
7# chunyang

晶振应该没问题。那就可能是复位的问题了,等明天考完试,我再去调试下,希望真的是这个问题啊?
那么该怎么让它可靠呢

使用特权

评论回复
10
chunyang| | 2011-5-17 01:44 | 只看该作者
2052带片内复位,如果本振频率在12M以下,将复位端直接接地即可,如果本振频率较高,最好使用一片复位IC。

使用特权

评论回复
11
yewuyi| | 2011-5-17 14:15 | 只看该作者
LZ实在很牛X,请问,什么叫中毒?

使用特权

评论回复
12
清风致影| | 2011-5-17 17:56 | 只看该作者
程序问题吧 最好把程序贴上来分析

使用特权

评论回复
13
chunyang| | 2011-5-18 00:31 | 只看该作者
中毒当然绝对不会。

使用特权

评论回复
14
望宙风舟|  楼主 | 2011-5-18 13:39 | 只看该作者
谢谢各位。复位端我直接接地也还是不行。
   说是中毒,我原本以为是感染病毒了嘛,所以这样说咯。
这个程序是
//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//
#include <REG51.h> //通用89C51头文件
sbit LED1 = P1 ^ 0; //定义闪烁LED
sbit LED2 = P1 ^ 1; //定义闪烁LED

//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//
//函数名:定时/计数器初始化函数
void T_C_init (void){
        TMOD = 0x11; //高4位控制T/C1 [ GATE,C/T,M1,M0,GATE,C/T,M1,M0 ]
        EA = 1;        //中断总开关

        TH1 = 0xFE; //16位计数寄存器T1高8位(写入初值)
        TL1 = 0xFE; //16位计数寄存器T1低8位
        ET1 = 1; //T/C1中断开关
        TR1 = 1; //T/C1启动开关

        TH0 = 0x13; //16位计数寄存器T0高8位
        TL0 = 0x13; //16位计数寄存器T0低8位(0x3CB0 = 50mS延时)
        ET0 = 1; //T/C0中断开关
        TR0 = 1; //T/C0启动开关
}
//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//

//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//
//函数名:定时/计数器1中断处理函数
void T_C1 (void) interrupt 3  using 3{ //切换寄存器组到3
        TH1 = 0xFE; //16位计数寄存器T1高8位(重新写入初值)
        TL1 = 0xFE; //16位计数寄存器T1低8位
       
        LED2 = ~LED2;                //取LED相反状态
}

//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//
//函数名:定时/计数器0中断处理函数
/void T_C0 (void) interrupt 1  using 1{ //切换寄存器组到1
        TH0 = 0x13; //16位计数寄存器T0高8位(重新写入初值)
        TL0 = 0x13; //16位计数寄存器T0低8位
       
        LED1 = ~LED1;                //取LED相反状态
}

//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+/
//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//

void main (void){ //主程序
        T_C_init(); //初始化
        while(1){

        }
}

//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//+_+//

使用特权

评论回复
15
清风致影| | 2011-5-19 11:54 | 只看该作者
单片机的头文件是REG51.h吗????
顺便再说下 程序编程的风格不要太花俏

使用特权

评论回复
16
望宙风舟|  楼主 | 2011-6-3 22:22 | 只看该作者
我现在又发现个问题了:这个中毒可能是我把晶振接错了,我把晶振接在第8跟第9脚,也就是P3.4/TO/ECI跟P3.5/T1/PCA1/PWM1这两脚上,然后导致以后的下载不行了。但是不知是不是真的,因为有几片我是用内部时钟的。求大虾之解。。。还有是不是质量问题啊?

使用特权

评论回复
17
boby136| | 2011-6-6 12:43 | 只看该作者
可以用内部时钟哇?  内部时钟跑起来 也要靠晶振吧     多半晶振接错的问题

使用特权

评论回复
18
zjswuyunbo| | 2011-6-7 16:16 | 只看该作者
晶振配置错了?

使用特权

评论回复
19
dqyubsh| | 2011-6-7 20:22 | 只看该作者
看起来一团糟,难道设计之前不仔仔细细看看手册吗?如果看了,哪会有这样乱七八糟的事情,即便能跑了,也是糊弄的,无语。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

32

帖子

1

粉丝