发新帖我要提问
12
返回列表
打印

STC的到单片机到底怎么样?

[复制链接]
楼主: wangkj
手机看帖
扫描二维码
随时随地手机跟帖
21
wangkj|  楼主 | 2008-3-26 14:34 | 只看该作者 回帖奖励 |倒序浏览

datasheet很详细呀

缺点就是tmd几乎全部是汇编。
//串口波特率通用设置语句
TH1   =   256   -   ((FREQ_OSC   *   2L   *   1000L)/   (12   *   32   *   9600L))  

这样对不对?
//原来的写法太罗嗦
#define OSC_FREQ                22118400L
#define BAUD_115200             256 - (OSC_FREQ/192L)/115200L
#define BAUD_57600              256 - (OSC_FREQ/192L)/57600L
#define BAUD_38400              256 - (OSC_FREQ/192L)/38400L
#define BAUD_28800              256 - (OSC_FREQ/192L)/28800L
#define BAUD_19200              256 - (OSC_FREQ/192L)/19200L
#define BAUD_14400              256 - (OSC_FREQ/192L)/14400L
#define BAUD_9600               256 - (OSC_FREQ/192L)/9600L
#define BAUD_4800               256 - (OSC_FREQ/192L)/4800L
#define BAUD_2400               256 - (OSC_FREQ/192L)/2400L
#define BAUD_1200               256 - (OSC_FREQ/192L)/1200L

使用特权

评论回复
22
wangkj|  楼主 | 2008-3-26 15:05 | 只看该作者

补充:

//***********************串口初始化波特率定义*************************
//Timer 是32 预分频设计的,硬件决定的。
//TH1   =   256   -   ((FREQ_OSC   *   2L   *   1000L)/   (12   *   32   *   9600L))  
//TH1   =   256   - FREQ_OSC/12L/32L/BAUD = 256 - FREQ_OSC/384L/BAUD
//实际波特率:BAUD=FREQ_OSC*32/12/(256-TH1)
//误差error = (BAUD - BAUD_STAND)/BAUD_STAND * 100%
//如果误差过大,必须换波特率或者FREQ_OSC
//如果启用:SMOD 波特率加倍模式
//TH1   =   256   - FREQ_OSC/12/32/BAUD/2 12/32/2=192L
#define OSC_FREQ                22118400L
#define BAUD_115200             256 - (OSC_FREQ/192L)/115200L
#define BAUD_57600              256 - (OSC_FREQ/192L)/57600L
#define BAUD_38400              256 - (OSC_FREQ/192L)/38400L
#define BAUD_28800              256 - (OSC_FREQ/192L)/28800L
#define BAUD_19200              256 - (OSC_FREQ/192L)/19200L
#define BAUD_14400              256 - (OSC_FREQ/192L)/14400L
#define BAUD_9600               256 - (OSC_FREQ/192L)/9600L
#define BAUD_4800               256 - (OSC_FREQ/192L)/4800L
#define BAUD_2400               256 - (OSC_FREQ/192L)/2400L
#define BAUD_1200               256 - (OSC_FREQ/192L)/1200L

使用特权

评论回复
23
wangkj|  楼主 | 2008-3-26 15:35 | 只看该作者

补充2,供参考

//#include <REG54.H>
//#include <AT89X55.H>
#include <REG51F.H>
//#include <REG52.H>

#include <stdio.h>
#define uchar unsigned char
#define uint unsigned int
#define Byte unsigned char
#define Word unsigned int
#define bool bit
#define true 1
#define false 0
//***********************串口初始化波特率定义*************************
//Timer 是32 预分频设计的,硬件决定的。
//TH1   =   256   -   ((FREQ_OSC   *   2L   *   1000L)/   (12   *   32   *   9600L))  
//TH1   =   256   - FREQ_OSC/12L/32L/BAUD = 256 - FREQ_OSC/384L/BAUD
//实际波特率:BAUD=FREQ_OSC/32/12/(256-TH1)
//误差error = (BAUD - BAUD_STAND)/BAUD_STAND * 1.00
//如果误差过大,必须换波特率或者FREQ_OSC
//如果启用:SMOD 波特率加倍模式
//TH1   =   256   - FREQ_OSC/12/32/BAUD/2 12/32/2=192L
#define OSC_FREQ                22118400L
#define BAUD_SMOD_115200             256 - (OSC_FREQ/192L)/115200L
#define BAUD_SMOD_57600              256 - (OSC_FREQ/192L)/57600L
#define BAUD_SMOD_38400              256 - (OSC_FREQ/192L)/38400L
#define BAUD_SMOD_28800              256 - (OSC_FREQ/192L)/28800L
#define BAUD_SMOD_19200              256 - (OSC_FREQ/192L)/19200L
#define BAUD_SMOD_14400              256 - (OSC_FREQ/192L)/14400L
#define BAUD_SMOD_9600               256 - (OSC_FREQ/192L)/9600L
#define BAUD_SMOD_4800               256 - (OSC_FREQ/192L)/4800L
#define BAUD_SMOD_2400               256 - (OSC_FREQ/192L)/2400L
#define BAUD_SMOD_1200               256 - (OSC_FREQ/192L)/1200L


#define BAUD_115200             256 - (OSC_FREQ/384L)/115200L
#define BAUD_57600              256 - (OSC_FREQ/384L)/57600L
#define BAUD_38400              256 - (OSC_FREQ/384L)/38400L
#define BAUD_28800              256 - (OSC_FREQ/384L)/28800L
#define BAUD_38400              256 - (OSC_FREQ/384L)/38400L
#define BAUD_14400              256 - (OSC_FREQ/384L)/14400L
#define BAUD_9600               256 - (OSC_FREQ/384L)/9600L
#define BAUD_4800               256 - (OSC_FREQ/384L)/4800L
#define BAUD_2400               256 - (OSC_FREQ/384L)/2400L
#define BAUD_1200               256 - (OSC_FREQ/384L)/1200L
//普通模式:29.4912Mhz晶振 9600bps 误差0;28.636晶振,bps 2400 误差 0.21% STC5410可以12倍速bps

使用特权

评论回复
24
wkman| | 2008-3-26 18:29 | 只看该作者

要stc的e文pdf资料,这里下载:

http://www.megawin.com.tw/ProductBigClass_8051.asp?BigClassName=8051%20MicroController

使用特权

评论回复
25
Swd21ic| | 2008-3-26 22:10 | 只看该作者

Re~~

可以使用8051F,ad也不错,12,16,24位都有.

使用特权

评论回复
26
winds| | 2008-3-26 22:28 | 只看该作者

RE:5楼: 最大的问题是使用中丢程序,就算不用IAP也会丢!

这个问题开始我遇到很多次,一直查不出问题,还以为自己做的不够。后来自己做远程下载,自己写IAP程序,使用后问题解决。我猜想是STC单片机的引导程序有问题,会误操作,把串口的乱码当作有效数据,把程序擦除了!而我自己写的IAP程序波特率固定的,然后校验非常充分,不会出现误触发

使用特权

评论回复
27
icecut| | 2008-3-26 22:44 | 只看该作者

一起起哄

今天拿出以前用的STC来发现竟然不能下载了。郁闷。换了一个新片子也不行。郁闷了。正在找原因。。。。。

使用特权

评论回复
28
chunyang| | 2008-3-26 22:57 | 只看该作者

26楼winds说到了根上

使用特权

评论回复
29
wangkj|  楼主 | 2008-3-27 08:45 | 只看该作者

用过的都说孬,完了,完了

就没有说好的?看来如果上批量,必须找换CPU了。

使用特权

评论回复
30
mamalihui| | 2008-3-27 14:01 | 只看该作者

虽然孬

但是还在一直用,毕竟有它 的优点

使用特权

评论回复
31
wangkj|  楼主 | 2008-3-27 14:35 | 只看该作者

ls的用了多少时间多少数量?

使用特权

评论回复
32
ar3000a| | 2008-5-21 21:15 | 只看该作者

STC的AD转换到100KSPS,AVR和PIC都作不到。

要求精度差点,速度高点,STC就正好符合要求。 更好的AD就用专门AD芯片吧,单片机里面的AD只能对付粗略的场合。

使用特权

评论回复
33
zxp12345| | 2008-5-21 21:49 | 只看该作者

图他下载方便,问题倒没遇到过

实际用过好几个型号,数量少(各几百片),倒没遇到什么问题.

好处:
1.感觉好处就是下载方便: 自从有了它,就丢掉51仿真器了,试验好了烧到别的51 IC,真省事.
2.解密相对麻烦些.

不好的地方:1. 老听到有人说有丢程序的问题,心里怕怕!
          从原理上讲他这种IAP下载有一定风险,只是机率多大的问题.
           2.现在看到他量上来了,价格却涨了.现在只有他独家卖,想咋的就 咋地,非常不爽.

好在有那么多芯片可以兼容,不行了就换. ^_^  ^_^.

=============================================================
目前采用的工艺,在8位机里面其实速度都差不多.主要是看内部总线的速度,到了25MHZ左右几乎都到顶了(唯一看到C8051F有几款可以达到100M  ^_^ ^_^).

使用特权

评论回复
34
jerkoh| | 2008-5-21 22:01 | 只看该作者

re

这个问题开始我遇到很多次,一直查不出问题,还以为自己做的不够。后来自己做远程下载,自己写IAP程序,使用后问题解决。我猜想是STC单片机的引导程序有问题,会误操作,把串口的乱码当作有效数据,把程序擦除了!而我自己写的IAP程序波特率固定的,然后校验非常充分,不会出现误触发 

请问下WINDS
自己写的IAP程序是如何固化在STC的引导区的
是什么方法实现的呢

使用特权

评论回复
35
ar3000a| | 2008-5-23 01:26 | 只看该作者

当成个普通的51放到烧写器上

楼上:当成个普通的51放到烧写器上就随便烧程序了,
http://bbs.leowood.net/web/leowood/forum/incomefiles/20084/2819195374017.GIF
不明白为什么总有人说STC不好。看看这个图,大家在用的电阻全是垃圾货色,温飘、精度没一样出众的,还不都在用?   STC即使是垃圾,用用不可以吗?

回忆一下当年的ATMEL,当时的形象也是低价位路线,小公司,野路子,芯片不如INTEL原装。 现在INTEL那个陶瓷封装金子作引线的8052谁还用?

使用特权

评论回复
36
notpower| | 2008-5-23 11:07 | 只看该作者

关注中。

使用特权

评论回复
37
yongfei| | 2008-5-23 11:53 | 只看该作者

感觉还可以

STC12C2052我们一直在批量用,全用在工业环境,还没出现过问题,感觉还不错,在51里面个人感觉这款应该是性价比最高的了。通过自己做的一些试验来看,宏晶是吹过头了,但也不像有些网友说的那么差劲,应用在工业环境中还算稳定。个人经验,如果运行频率在35MHz,一定要用外部复位,并且千万不要用阻容复位。
宏晶的其他产品没有用过,不发表评论。

使用特权

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

本版积分规则