0

关于投票
HT-PICC的错误报告
如果定义的变量超出某个bank的范围,会出现诸如“Can't find 0x80 words for psect rbss_2 in segment BANK2”之类的错误报告。

如果“.c”中定义的变量的bank与“.h”中extern的相应变量的bank不一致,会出现类似“Fixup overflow in expression (loc 0xDC2 (0xD9A+40), size 1, value 0x1A3)”的错误报告。
系统分类: 单片机
用户分类: 单片机
标签: HT-PICC 错误报告
来源: 原创
发表评论 阅读全文(19) | 回复(0)

0

关于投票
关于《Protell99 SE 小帖士》的又一点补充
18:将多个不相关的原理图画在一个PCB文件中:右击原理图的空白处(边框以外的空白处,很奇怪,如果点了边框里面绘图区的空白处,虽然也出现菜单,但点“Properties”时没有对话框出现,可能是软件出了点小毛病),选择“properties”->“Organization”,修改图纸编号。建立一个总图,把所有分图的Symble添加到总图里面。用总图生成网络表:选择“Append sheet numbers to local...”使每个网络标号包含其所在分图的图纸编号。这样,不同图纸中同名的网络标号就不会自动连接到一起了。
系统分类: 单片机
用户分类: 单片机
标签: Protell99 SE
来源: 原创
发表评论 阅读全文(57) | 回复(1)

0

关于投票
ASCII码表

ASCII 码表,放在这里只是为了查询方便。

DecHx OctChar
DecHx OctChar DecHx OctChar DecHx OctChar
00000NUL(null)3220040SPACE6440100@9660140`
11001SOH(start of heading)3321041!6541101A9761141a
22002STX(start of text)3422042"6642102B9862142b
33003ETX(end of text)3523043#6743103C9963143c
44004EOT(end of transmission)3624044$6844104D10064144d
55005ENQ(enquiry)3725045%6945105E10165145e
66006ACK(acknowledge)3826046&7046106F10266146f
77007BEL(bell)3927047'7147107G10367147g
88010BS(backspace)4028050(7248110H10468150h
99011TAB(horizontal tab)4129051)7349111I10569151i
10A012LF(NL line feed, new_line)422A052*744A112J1066A152j
11B013VT(vertical tab)432B053+754B113K1076B153k
12C014FF(NP form feed, new page)442C054,764C114L1086C154l
13D015CR(carriage return)452D055-774D115M1096D155m
14E016SO(shift out)462E056.784E116N1106E156n
15F017SI(shift in)472F057/794F117O1116F157o
1610020DLE(data link escape)483006008050120P11270160p
1711021DC1(device control 1)493106118151121Q11371161q
1812022DC2(device control 2)503206228252122R11472162r
1913023DC3(device control 3)513306338353123S11573163s
2014024DC4(device control 4)523406448454124T11674164t
2115025NAK(negative acknowledge)533506558555125U11775165u
2216026SYN(synchronous idle)543606668656126V11876166v
2317027ETB(end of trans. block)553706778757127W11977167w
2418030CAN(cancel)563807088858130X12078170x
2519031EM(end of medium)573907198959131Y12179171y
261A032SUB(substitute)583A072:905A132Z1227A172z
271B033ESC(escape)593B073;915B133[1237B173{
281C034FS(file separator)603C074<925C134\1247C174
291D035GS(group separator)613D075=935D135]1257D175}
301E036RS(record separator)623E076>945E136^1267E176~
311F037US(unit separator)633F077?955F137_1277F177DEL

系统分类: 单片机
用户分类: 单片机
标签: ASCII
来源: 整理
发表评论 阅读全文(130) | 回复(0)

0

关于投票
串口惊魂
UART串口就像我的宠物,亲亲热热十几年了,一直很温顺。今天突然向我龇牙,被它吓出一身冷汗。

其实事件的起因很简单,算是我多事,本来没什么的。焊好一片新板,uPSD3251的,11.0592的晶体,带两个串口,想调试一下。就写了一段单片机的程序,在串口接收中断里面把收到的东东立刻发回去。

用PC机串口调试软件定时发出一个测试字符“a”,然后接收,Rx和Tx指示LED同时闪亮,接收正确。当我随手把测试字符改为“abcdefg”时,就出现乱码了,好像大约一秒出现一次(巧合,跟自动发送的定时时间有关)。

于是怀疑是不是没有伺候好看门狗,经测试,那条狗很尽职,从来不乱叫。

然后怀疑晶体的质量,换了晶体,也换了相应的电容,愁容依旧。

最后,修改程序,把收到的东东放到接收缓冲区,满了的时候,就转移到发送缓冲区发送,本本份份的、按部就班的处理接收和发送,问题就解决了。

其实,在接收中断里面随手把收到的东东发回去,只是为了测试一下通路,实际应用中没有人会这样做。但是,仅仅是测试的时候多发了几个字符,没想到就能积累起误差,引起这么大的麻烦。看来,还是功夫不到家啊。

后记:
51单片机只有接收缓冲没有发送缓冲,在上一个字节没有发送完成就写入下一个字节当然会出问题,与误差积累没有关系。PIC系列接收发送都有缓冲,就不会出现这种问题。
系统分类: 单片机
用户分类: 单片机
标签: 串口
来源: 原创
发表评论 阅读全文(264) | 回复(1)

0

关于投票
关于《Protel99 SE小贴士》的一点补充

(接《Protel99 SE小贴士》)

16: PCB改栅格:工具条里面的“#”。

17:如果原理图太大,打印困难,可以切割成多个sch分图,然后建立一个总图,在总图里面用"Design->Creat Symble from sheet"生成各个分图的Symble。用总图做Annotate并生成网络表。做Annotate的时候,不要选中Annotate对话框中的"Option->Current sheet only",这样,所有的分图的元件会统一编号。生成网络表的时候,"Net Identifier Scope"要选择"Net Labels and Ports Global";"Sheets to Netlist"要选择"Active sheet plus sub sheets"或者"Active project"。这样,就不需要在各分图之间用Port做电连接,系统会认为不同分图中所有同名的NetLabel是连在一起的。


系统分类: 单片机
用户分类: 单片机
标签: Protel99 SE
来源: 原创
发表评论 阅读全文(190) | 回复(0)

1

关于投票
继电器线圈的驱动
关于继电器:
交流线圈的铁芯中有短路环,保证电流过零而磁路不过零,直流线圈的铁芯中没有。
交流线圈可以长时间通电,直流线圈则要看具体型号的说明书。
交流线圈的阻抗小,如果用直流驱动,要串联电阻。
MAX4822/4824用于驱动继电器,具有省电模式。
如果需要一个线圈长时间通电,可以用PWM驱动。线圈ON的时候,使PWM的duty cycle为100%,维持1s,然后降低duty cycle使线圈两端的电压达到维持电压的1.5倍。如果要驱动多个继电器,可以用74HC165,6B595等带OE的芯片缓冲,PWM连接到OE。
系统分类: 接口电路
用户分类: 单片机
标签: 继电器
来源: 原创
发表评论 阅读全文(217) | 回复(0)

3

关于投票
Protel99 SE的小贴士
Protel99 SE 的 Tips

1:按Tab键修改正准备放置的实体的属性。

2:Schematics生成网络文件,在选中Active Project时,也要选Append Sheet Numbers to Local Nets和Descend into sheet parts。

3:生成元件列表。Schematics中选"Edit"->"Export to Spreed"->选"Current Sheet" 或 "Project"->"Next"->只选中"Part",其余的都Off掉->"Next"->只选中"Designator"、"Footprint"和"Part Type"->"Next"->"Finish"。
或者:"Report"->"Bill of Material"设置更简单,更快一些。

4:在排了一半的PCB中,如果删掉了网络线或者根本就没有调入网络线,只是用手 工排了一部分,这时,如果调入网络线,所有的网络线线会像蜘蛛网一样,都会显示在屏幕上。这时,要去掉已经排好的部分的网络线,应该这样做: "Design"->"Netlist Manager"->"Menu"->"Update_Free Primitives From Component Pads"->"Yes"。如果管脚和与管脚相连的线都是高亮显示,就运行一次DRC(Design Rule Check),刷新一下。

5:设置/取消自动生成backup文件,在"File"左边那个大的下箭头中,有一个"Preference"。

6:"View"->"Toolbars"中有"Power Objects"、"Digital Objects"等工具,很好用。

7:键盘上的"End"键刷新屏幕。

8:其实,窗口上的"SelectObjectInsideArea"、"DeselectAllObjects"等buttons和"Wiring Tools"中的"Place Part"等buttons都很方便,不必在键盘上敲命令。可能是DOS版本的Protel用的实在是太熟练了,这种恶习很难改。

9:生成Gerberfile: "File"->"CAM Manager..."->"Gerber"。在"Cam Output for xxx.cam"中选中"Gerber Output1"。然后按"F9"或"Tools"->"Generate CAM Files"。

10:改线宽参数:"Design"->"Rules"->"Routing"->"Width Constraint"设置Minimum、Maximum和Preferred。
改孔径参数:"Design"->"Rules"->"Manufacturing"->"Hole size constraint"。

11:PCB生成.net,并与Sch生成的.net比较:"Design"->"Netlist Manager"->"Menu"->"Creat Net List From connected Copper..."、"Compare Net List"、"Compare Net List File to Board..."。

12:PCB打印某一层:"File"->"Print/Preview"->左侧"Browse PCB Print"页中->"Multilayer Composite Print"中delete掉不想要得层。

13: 隐藏所有的元件名:双击Component,属性页有三页,选"Comment"->"Hide"即可。

14: 1206的SMDLED用3528封装。大一点的4007用7227封装。

15:schematic lib编辑器件时,"SPACE"键用来切换是否允许线条为任意角度斜线,或者切换x,y方向中哪一个先画。