yangice 发表于 2007-7-7 19:24

STC的单片机制要买个片子就可以学了。

电平转换电路两个三极管就可以了。

lusson 发表于 2007-7-7 21:28

原帖由 locky_z 于 2007-7-7 16:23 发表 http://bbs.hifidiy.net/images/common/back.gif
看到LZ说STC的51这么好,特到宏晶网站上看了一下,好像说传真就可以免费拿编程器/试验板,于是传真一份过去,很快就有MM打电话过来,知道我是业余的,不能免费,没办法,只好购买。
编程、试验合一板才50块 ...


其实我没有说它好,只是觉得它很适合入门,因为这个IC下载程序是用串口的,可在线下载程序,对于初学者来说很方便

我只用过它的STC89C系列,带AD的用过STC12C2051,是8位AD,用来做了个电压表,不过后面出问题了,开机显示一段时间就灭掉了
也不知道是什么问题

申请它的样片需要以公司的名义,个人来说一般申请不到的!

初学者如果觉得40个脚太麻烦了的话可以用STC12C2051系列,是20个脚和,和AT的2051兼容的。

彭兴 发表于 2007-7-7 21:37

好帖!!好好学习:lol :lol :lol :lol

roe 发表于 2007-7-7 22:11

看看

lusson 发表于 2007-7-7 23:33

先写一下自己一开始学单片机的困惑吧!

我是计算机专业的,不过还在大二的时候就听师兄们说单片机很难,到大三选课的时候,在班上大部分同学反对下,很遗憾的没有选这门课,直到后面我才发现我错失了一个多么大的机会,接触单片机还是大四上学期的时候,当时记得是看到论文题目里唯一跟电子有关的课题就是:“单片机智能温度测量报警系统”于是毫不犹豫的选了这个课题,当时班上只有我一个人选了

知道隔壁班开过这个课,就去借了一本基础书,然后去长运电子市场买了AT89S51,但并不知道从何下手,这时候遇到了狂兄,在他的一步一步的指导下,终于做好了并口下载线,还有做了一个最小系统板,然后也烧录了第一个程序,就是一个秒闪的简单的程序,当时真的觉得很高兴,因为觉得它的潜力太大了,以前就想过,如果有种IC可以让我来定制它的功能那是多么好的事情

之后开始了慢慢的探索的过程,因为没有自己的电脑,每次都得等同学去睡觉了我再用,基本上是从12点到四五点!

对于编程语言,当时并没有考虑太多,书上一开始介绍的硬件自己也是一知半解,什么串口,定时器之类的以前都没接触过,书上介绍的是汇编指令,因为以前也有学过宏汇编,虽然90%都回到老师那去了,但凭着一股冲劲,还有强记强理解!而对指令最好的理解就是把它放到实际的环境中去运行。完成一个完整的程序!

之后也丢过一段时间,大四上学期结束后就一直没接触了,直到要做论文的时候又开始学了,当第一次测出DS18B20的温度时,真的也兴奋,基本上睡不着,而这个过程基本上都是天天凌晨在电脑前奋斗的过程,因为当时对它实在是太感兴趣了,所以我现在也强调兴趣是最好的老师,如果你不感兴趣就不要强迫自己去学了,你可以先去了解它,对它的潜能做一个展望,也许你会发现它实在是很不错的东西。

毕业论文的时候拿着做好的板和演示程序,答辩老师说我是我们院第一个把硬件做出来的(可以理解)当然毕业论文也得了优!

而从事单片机工作也是巧遇,就自己那时候的水平,真的不敢拿出来,找的第一份工作是汽车上移动播放器维修(其实是电脑了)一个月后,被同学介绍进江门一个厂里,而那个同学也是因为我的影响改了和我一样的毕业论文题目,也因此喜欢上了单片机,在那个厂里老板很信任,也给了我们很大的空间,而网络也真的很强大,我们学到了好多,而在这时候再回过头去看论文,觉得那时候的编程真的很糟,这是能理解的。现在来深圳后,又发现在江门时候自己的编程一点都不规范,在那里因为没人带,一切都得自己去摸索。

其实我也很菜,现在用过的就51单片机和义隆的,不过想学的真的很多,AVR,MSP430,CPLD,DSP和ARM也是一个长远的计划!现在工作有点忙,写得有点多了

其实我说这么大段的意思就是想大家对学习单片机最好有一个明确的目的,或是要培养一个兴趣,这样才有动力学,如果没有动力,三天打鱼,二天晒网,前天学到说不定过二天又忘光了

好了,就说这么多吧,罗嗦了!!

还是那句话,希望想学的找些基础的内容来看一下,对单片机有个了解,今天去赛格,本来想把元件都买回来开始做实验的,不过工作上有些事,先缓一缓吧。不好意思了

浩浩 发表于 2007-7-7 23:35

先顶下!
好几年前就想学了.就是学不进.
如果通俗易懂.他奶奶的看这次能不能搞得掂.
先告诉我们要准备些什么材料.我们好准备下.
再开讲容易懂点.也容易上手.
进度一定要慢点.
他奶奶的跟单片机拼了!!
明天就去赛格瞧瞧!!

3011 发表于 2007-7-7 23:37

用2051搞过个电子钟,走得还算可以,可惜程序不是我的.;P ;P ;P ;P ;P

lusson 发表于 2007-7-8 00:03

原帖由 浩浩 于 2007-7-7 23:35 发表 http://bbs.hifidiy.net/images/common/back.gif
先顶下!
好几年前就想学了.就是学不进.
如果通俗易懂.他奶奶的看这次能不能搞得掂.
先告诉我们要准备些什么材料.我们好准备下.
再开讲容易懂点.也容易上手.
进度一定要慢点.
他奶奶的跟单片机拼了!!
明天 ...
准备材料   
电脑一台带com口(串口)如无,请买一个USB转串口线

单片机   STC89C52(大概6元钱)深圳塞格一楼小门进去有,还有电梯上二楼往右转即可也有买

串口线一条      串口9脚座一个(孔的)

万用板若干

二脚普通晶振   12M   11.0592M各备一个

5v电源    可从电脑USB口接出   也可用5V稳压供给

其他杂元件led若干   数码管(共阳)四个(多买几个也可以)

40脚IC座一个

MAX232(大概3元钱)

74HC595(串转并口的IC大概1.5或2块)可买二三个

红外一体化接收头

如果你平时备有元件的话其他阻容之类普通三极管就不介绍了

注:常用电阻10K,三极管8550,8050之类的

到时候先用这些做几个简单的实验吧

xjsman 发表于 2007-7-8 08:22

回复dmqq

老兄是从哪里看出我不是学单片机的?果然高.

xjsman 发表于 2007-7-8 08:28

在杭州的朋友

本人很讨厌邮寄,在杭州的朋友可以送他一套STC的编程下载器.MEGA16,32,64,128的JTAG仿真器.

mack 发表于 2007-7-8 08:44

我杭州的呀....:lol

xjsman 发表于 2007-7-8 08:52

怎么联系

给个联系方式

不才 发表于 2007-7-8 11:43

嘿嘿,来得晚了,还收学徒吗?

欧蒙泰 发表于 2007-7-8 14:29

呵呵,单片机哦,顶一顶先!:lol

magicview 发表于 2007-7-8 15:57

晕哦,我这居然没用MAX232这个IC卖

zhonggx 发表于 2007-7-8 19:06

我有SST单片机做的MON51仿真电路板,有谁要啊?因为我所剩不多了。大家登记一下。如果人多,我可以去代大家重新去做板。USB供电,本身有8个LED,可以做一些简单实验。空板如下图,大片的是仿真器,小片的是2051转接器。STCB也有一款CPU也支持仿真功能,也能用。如果需要的朋友多,我可以改成用USB转串口的模式,那样可以做到更小。

大灰狼dhl 发表于 2007-7-8 19:36

楼上的是活雷锋呀!:victory: :victory: :victory: :kiss: :kiss: :kiss: :kiss: :D :D :D

lusson 发表于 2007-7-8 19:44

有仿真器还是比较方便的,调试比较方便,比较容易发现隐含的错误在哪里!不过说起来惭愧,我51还没用过仿真器,以前买过一个套件,带有仿真芯片,不过都不知道怎么用,看个人习惯吧!对于在线可下载程序的单片机来说,到了一定熟练程序的话我觉得不用仿真器也可以!


回magicview 兄,如果没有MAX232,可用三极管焊个电路,昨二天还见论坛有人贴图出来问的
兄弟在哪呢?如果方便的话到时候送你一片也无妨

lusson 发表于 2007-7-8 19:54

下面先给出一下51单片机的指令集,51单片机是集中指令集(CISC)单片机,所以指令比较多,带来的好处是功能丰富,很多指令也不是经常用到,下面的是按照首字母顺便排列的指令表,可以方便的查找需要的指令,后面将给出分类的指令集

助记符是就是指令对应的符号,为了方便记忆,操作符是指令十六进制表示形式,说明里有该条指令的功能,字节是该条指令在内部ROM中占用的空间,振荡周期是执行完该条指令所需的时间,这里是以振荡周期为基准的,一般的是以指令周期来计算的。

大家不要看到这么多指令就头晕,不用强记,开始的话可以用到了再去找,这个都没关系的!

助记符操作码说明字节振荡周期
ACALLaddrllX1*绝对子程序调用224
ADDA,Rn28~2F寄存器和A相加112
ADDA,direct25直接字节和A相加212
ADDA,@R26,27间接RAM和A相加112
ADDA,#data24立即数和A相加212
ADDCA,Rn38~3F寄存器、进位位和A相加112
ADDCA,dircet35直接字节、进位位和A相加212
ADDCA,@R36,37间接RAM、进位位和A相加112
ADDCA,dircet34立即数、进位位和A相加212
AJMPaddrllY1**绝对转移224
ANLA,Rn58~5F寄存器和A相”与”112
ANLA,direct55直接字节和A相”与"212
ANLA,@Ri56,57间接RAM和A相"与"112
ANLA,#data54立即数和A相"与"212
ANLdirect,A52A和直接字节相"与"212
ANLdirect,#data53立即数和直接字节相"与"324
ANLC,bit82直接位和进位相"与"224
ANLC,/bitB0直接位的反和进位相"与"224
CJNEA,dircet,relB5直接字节与A比较,不相等则相对转移324
CJNEA,#data,relB4立即数与A比较,不相等则相对转移324
CJNERn,#data,relB8~BF立即数与寄存器相比较,不相等则相对转移324
CJNE@R,#data,relB6,B7立即数与间接RAM相比较,不相等则相对转移324
CLRAE4A清零112
CLRbitC2直接位清零212
CLRCC3进位清零112
CPLAF4A取反112
CPLbitB2直接位取反212
CPLCB3进位取反112
DAAD4A的十进制加法调整112
DECA14A减1112
DECRn18~1F寄存器减1112
DECdirect15直接字节减1212
DEC@Ri16,17间接RAM减1112
DIVAB84A除以B148
DJNERn,relDB~DF寄存器减1,不为零则相对转移324
DJNEdirect,relD5直接字节减1,不为零则相对转移324
INCA04A加1112
INCRn08~0F寄存器加1112
INCdirect05直接字节加1212
INC@Ri06,07间接RAM加1112
INCDPTRA3数据指针加1124
JBbit;rel20直接位为1,则相对转移324
JBCbit,rel10直接位为1,则相对转移,然后该位清0324
JCrel40进位为1,则相对转移224
JMP@A+DPTR73转移到A+DPTR所指的地址124
JNBbit,rel30苯游晃?,则相对转移324
JNCrel50进位为0,则相对转移224
JNZrel70A不为零,则相对转移224
JZrel60A为零,则相对转移224
LCALLaddr1612长子程序调用324
LJMPaddr1602长转移324
MOVA,RnE8~EF寄存器送A112
MOVA,directE5直接字节送A212
MOVA,@RiE6,E7间接RAM送A112
MOVA,#data74立即数送A212
MOVRn,AF8~FFA送寄存器112
MOVRn,directA8~AF直接字节送寄存器224
MOVRn,#data78~7F立即数送寄存器212
MOVdirect,AF5A送直接字节212
MOVdirect,Rn88~8F寄存器送直接字节224
MOVdirect,direct85直接字节送直接字节324
MOVdirect,@Ri86,87间接RAM送直接字节224
MOVdirect,#data75立即数送直接字节324
MOV@Ri,AF6,F7A送间接RAM112
MOV@Ri,directA6,A7直接字节送间接RAM224
MOV@Ri,#data76,77立即数送间接RAM212
MOVC,bitA2直接位进位212
MOVbit,C92进位送直接位224
MOVDPTR,#data169016位常数送数据指针324
MOVCA,@A+DPTR93由A+DPTR寻直的程序存储器字节送A124
MOVCA,@A+PC83由A+PC寻址的程序存储字节送A124
MOVXA,@RiE2,E3外部数据存储器(8位地址)送A124
MOVXA,@DPTRE0外部数据存储器(16位地址)送A124
MOVX@Ri,AF2,F3A送外部数据存储器(8位地址)124
MOVX@DPTR,AF0A送外部数据存储器(16位地址)124
MULABA4A乘以B148
NOP00空操作112
ORLA,Rn48~4F寄存器和A相"或"112
ORLA,direct45直接字节和A相"或"212
ORLA,@Ri46,47间接RAM和A相"或"112
ORLA,#data44立接数和A相"或"212
ORLdirect,A42A和直接。字节"或"212
ORLdircect,#data43立即数和直接字节相"或"324
ORLC,bit72直接位和进位相"或"224
ORLC,/bitA0直接位的反和进位相"或"224
POPdirectD0直接字节退栈,SP减1224
PUSHdirectC0SP加1,直接字节进栈224
RET22子程序调用返回124
RETI32中断返回124
RLA23A左环移112
RLCA33A带进位左环移112
RRA03A右环移112
RRCA13A带进位右环移112
SETBbitD2直接位置位212
SETBCD3进位置位112
SJMPrel80短转移224
SUBBA,Rn98~FA减去寄存器及进位位112
SUBBA,direct95A减去直接字节及进位位212
SUBBA,@Ri96,97A减去间接RAM及进位位112
SUBBA,#data94A减去立即数及进位位212
SWAPAC4A的高半字节和低半字节交换112
XCHA,RnC8~CFA和寄存器交换112
XCHA,directC5A和直接字节交换212
XCHA,@RiC6,C7A和间接RAM交换112
XCHDA,@RiD6,D7A和间接RAM的低四位交换112
XRLA,Rn68~6F寄存器和A相"异或"112
XRLA,direct65直接字节和A相"异或"212
XRLA,@Ri66,67间接RAM和A相"异或"112
XRLA,#data64立即数和A相"异或"212
XRLdirect,A62A和直接字节相"异或"212
XRLdirect,#data63立即数和直接字节相"异或"324

lusson 发表于 2007-7-8 20:00

下面给出是以指令功能为分类的功能指令表
51单片机指令按照功能分就是五大类,所以实际上可以把这些指令缩小为五部分,用到时候再从某一部分扩展过去,这里是以指令周期来算执行时间的,传统51单片机是12分频,即指令周期为振荡周期的1/12,如果晶振为12M的话,一个指令周期就是1US

MC51单片机指令功能表

指令格式      功能简述                               字节数       周期


一、数据传送类指令
MOV   A, Rn            寄存器送累加器                  1          1
MOV   Rn,A               累加器送寄存器                  1          1
MOV   A ,@Ri            内部RAM单元送累加器             1          1
MOV   @Ri ,A            累加器送内部RAM单元             1          1
MOV   A ,#data         立即数送累加器                  2          1
MOV   A ,direct          直接寻址单元送累加器            2          1
MOV   direct ,A          累加器送直接寻址单元            2          1
MOV   Rn,#data         立即数送寄存器                  2          1
MOV   direct ,#data      立即数送直接寻址单元            3          2
MOV   @Ri ,#data      立即数送内部RAM单元             2          1
MOV   direct ,Rn         寄存器送直接寻址单元            2          2
MOV   Rn ,direct         直接寻址单元送寄存器            2          2
MOV   direct ,@Ri       内部RAM单元送直接寻址单元       2          2
MOV   @Ri ,direct       直接寻址单元送内部RAM单元       2          2
MOV   direct2,direct1    直接寻址单元送直接寻址单元      3          2
MOV   DPTR ,#data16      16位立即数送数据指针            3          2
MOVXA ,@Ri            外部RAM单元送累加器(8位地址)    1          2
MOVX@Ri ,A            累加器送外部RAM单元(8位地址)    1          2
MOVXA ,@DPTR          外部RAM单元送累加器(16位地址)   1          2
MOVX@DPTR ,A          累加器送外部RAM单元(16位地址)   1          2
MOVCA ,@A+DPTR      查表数据送累加器(DPTR为基址)    1          2
MOVCA ,@A+PC          查表数据送累加器(PC为基址)      1          2
XCH   A ,Rn            累加器与寄存器交换            1          1
XCH   A ,@Ri            累加器与内部RAM单元交换         1          1
XCHDA ,direct          累加器与直接寻址单元交换         2          1
XCHDA ,@Ri            累加器与内部RAM单元低4位交换    1          1
SWAPA                   累加器高4位与低4位交换          1          1
POP   direct            栈顶弹出指令直接寻址单元      2          2
PUSHdirect            直接寻址单元压入栈顶            2          2

二、算术运算类指令
ADD   A, Rn            累加器加寄存器                  1          1
ADD   A, @Ri            累加器加内部RAM单元             1          1
ADD   A, direct          累加器加直接寻址单元            2          1
ADD   A, #data         累加器加立即数                  2          1
ADDCA, Rn            累加器加寄存器和进位标志      1          1
ADDCA, @Ri            累加器加内部RAM单元和进位标志   1          1
ADDCA, #data         累加器加立即数和进位标志      2          1
ADDCA, direct          累加器加直接寻址单元和进位标志2          1
INC   A                   累加器加1                     1          1
INC   Rn                  寄存器加1                     1          1
INC   direct            直接寻址单元加1               2          1
INC   @Ri                内部RAM单元加1                  1          1
INC   DPTR                数据指针加1                     1          2
DA    A                   十进制调整                      1          1
SUBBA, Rn            累加器减寄存器和进位标志      1          1
SUBBA, @Ri            累加器减内部RAM单元和进位标志   1          1
SUBBA, #data         累加器减立即数和进位标志      2          1
SUBBA, direct          累加器减直接寻址单元和进位标志2          1
DEC   A                   累加器减1                     1          1
DEC   Rn                  寄存器减1                     1          1
DEC   @Ri                内部RAM单元减1                  1          1
DEC   direct            直接寻址单元减1               2          1
MUL   AB                  累加器乘寄存器B               1          4
DIV   AB                  累加器除以寄存器B               1          4

三、逻辑运算类指令
ANL   A, Rn            累加器与寄存器                  1          1
ANL   A, @Ri            累加器与内部RAM单元             1          1
ANL   A, #data         累加器与立即数                  2          1
ANL   A, direct          累加器与直接寻址单元            2          1
ANL   direct, A          直接寻址单元与累加器            2          1
ANL   direct, #data      直接寻址单元与立即数            3          1
ORL   A, Rn            累加器或寄存器                  1          1
ORL   A,@Ri             累加器或内部RAM单元             1          1
ORL   A,#data            累加器或立即数                  2          1
ORL   A,direct         累加器或直接寻址单元            2          1
ORL   direct, A          直接寻址单元或累加器            2          1
ORL   direct, #data      直接寻址单元或立即数            3          1
XRL   A, Rn            累加器异或寄存器                1          1
XRL   A,@Ri             累加器异或内部RAM单元         1          1
XRL   A,#data            累加器异或立即数                2          1
XRL   A,direct         累加器异或直接寻址单元          2          1
XRL   direct, A          直接寻址单元异或累加器          2          1
XRL   direct, #data      直接寻址单元异或立即数          3          2
RL    A                   累加器左循环移位                1          1
RLC   A                   累加器连进位标志左循环移位      1          1
RR    A                   累加器右循环移位                1          1
RRC   A                   累加器连进位标志右循环移位      1          1
CPL   A                   累加器取反                      1          1
CLR   A                   累加器清零                      1          1

四、控制转移类指令类
ACCALL addr11             2KB范围内绝对调用               2          2
AJMP   addr11             2KB范围内绝对转移               2          2
LCALLaddr16             2KB范围内长调用               3          2
LJMP   addr16             2KB范围内长转移               3          2
SJMP   rel                相对短转移                      2          2
JMP    @A+DPTR         相对长转移                      1          2
RET                     子程序返回                      1          2
RET1                      中断返回                        1          2
JZ   rel                累加器为零转移                  2          2
JNZ    rel                累加器非零转移                  2          2
CJNE   A ,#data ,rel    累加器与立即数不等转移          3          2
CJNE   A ,direct ,rel   累加器与直接寻址单元不等转移    3          2
CJNE   Rn,#data ,rel    寄存器与立即数不等转移          3          2
CJNE   @Ri ,#data,relRAM单元与立即数不等转移         3          2
DJNZ   Rn ,rel         寄存器减1不为零转移             2          2
DJNZ   direct,rel      直接寻址单元减1不为零转移       3          2
NOP                     空操作                        1          1

五、布尔操作类指令
MOV    C, bit            直接寻址位送C                   2          1
MOV    bit, C            C送直接寻址位                   2          1
CLR    C                  C清零                           1          1
CLR    bit                直接寻址位清零                  2          1
CPL    C                  C取反                           1          1
CPL    bit                直接寻址位取反                  2          1
SETB   C                  C置位                           1          1
SETB   bit                直接寻址位置位                  2          1
ANL    C, bit            C逻辑与直接寻址位               2          2
ANL    C, /bit         C逻辑与直接寻址位的反         2          2
ORL    C, bit            C逻辑或直接寻址位               2          2
ORL    C, /bit         C逻辑或直接寻址位的反         2          2
JC   rel                C为1转移                        2          2
JNC    rel                C为零转移                     2          2
JB   bit,rel         直接寻址位为1转移               3          2
JNB    bit,rel         直接寻址为0转移               3          2
JBC    bit,rel         直接寻址位为1转移并清该位       3          2
页: 1 2 3 [4] 5 6 7 8 9
查看完整版本: 另辟一块天地,单片机(入门交流)(7月4日晚9时更新)