版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章 微型机的基本知识CPU、存储器、输入/输出接口电路和系统总线构成。ABCBDB。数据总线(DataBus―DB)双向、三态:数据总线的根数决定了一次可以传递二进制数的位数。地址总线(AddressBus―AB)单向、三态:地址总线的位数决定了可以直接访问的存储单元(I/O口)的最大可能数量(即容量。控制总线(tolBus―C:控制总线用来传输控制信号,数据总线和每个元件的数据线相连,为了使U能够和其中一个元件正确通信,必须使用三态逻辑元件(特别针对输入元件。ALUAF和寄存器组,相互之间通过内部总线连接而成。CUPCIRIDPLA和时序特殊功能寄存器(PSW):CY(PSW.7)进位/借位标志位;AC(PSW.6)半进位/借位标志位;F0可由用户定义的标志位;、工作寄存器组选择位;OV溢出标志位;P奇偶标志位。堆栈与堆栈指示器P(ackoir:堆栈是按照“先进后出”或“后进先出”原则组织的一个存储区域。(8位二进制数称为1个字节,以B(Byte)表示;2个字节定义为1个字,以W(Word)表示;32位二进制数就定义为双字,以DW(Doubleword)表示。存储容量:存储器存储二进制信息多少的一个技术指标1KB=1024B(即1024×8位)1024KB=1MB(兆字节)1024MB=1GB(千兆字节)第2章 单片机硬件结构单片机主要功能特点:8位的CPU,片内有振荡器和时钟电路,工作频率为1~12MHz片内有128B数据存储器RAM片内有4KB程序存储器ROM64KRAM64KROM21/26个特殊功能寄存器48I/O口(PIO)个全双工串行口(SIO/UART)16位定时器/计数器(TIMER/COUNTER)2个优先级可处理5个中断源,两级中断优先级1个布尔处理器和1个布尔累加器(Cy)MCS-51指令集含111条指令/输出端;通常外接一个晶振两个电容。脚MCS-51(正脉冲保10ms以上)和开关复位(输出高电平)两种形式。ALE/𝑃𝑅𝑂𝐺(30脚ALEP0口上的地址信息ALEP0口上一般出现指令和数据信息。5. 𝑃𝑆𝐸𝑁(29脚)片外程序存储器读选通𝐸𝐴/Vpp(31脚)当访问内部程序存储器时,保持高电平;当接低电平时,只访问片外程序存储器P1.0—P1.7:准双向I/O口(内置了上拉电阻;准双向:在作输入口用时要先对其写“1P0.0—P0.7:双向I/O(内置场效应管上拉;寻址外部程序存储器时分时作为双向8位数据口和输出低88I/O口使用。P2.0—P2.7:双向I/O(内置了上拉电阻;寻址外部程序存储器时输出高8位地址;不接外部程序存储器时可作为8I/O口使用。(内置了上拉电阻I/O口。MCS-514个存储空间:片内程序存储器和片外扩展的程序存储器,片内数据存储器和片外扩展的数据存储器。片内RAM128字节(H—H片内RAM前32个单元是工作寄存器区(00H—1FH)RAM12816个单元。位地址编号为:00H—7FH20H—2FH单元21个特殊功能寄存器(SFR)8整除的SFR中的各位也可按位寻址RAM64K(0000H—FFFFH)ROM64K(0000H—FFFFH)FlashROM4K(000H—FFFH)MCS-51RAM可以分成三个物理空间,分别是工作寄存器区、位寻址区和数据缓冲区。专用寄存器:MS1共有23个特殊功能寄存器(3个属于8032/052,其中5个是双字节寄存器,程序计数器PC在物22SFR26个字节。程序计数器P(16bitA:最常用的专用寄存器寄存器B:是一个8位寄存器PSW8位寄存器,用来存放程序的状态信息,表征指令的执行状态,供程序查询和判别之用。SP8位寄存器,用来存放栈顶地址数据指针DPTR:是一个16位专用寄存器,高字节寄存器用DPH表示,低字节寄存器用DPL表示I/OP0~P3:I/OP0~P3的锁存器定时器/计数器MCS-5164KB。1个机器周期=6个状态=12个振荡周期第3章 MCS-51指令系统A——累加器B——专用寄存器C——进位或借位标志,或布尔处理机中的累加器#data——8位立即数#data16——16位立即数direct——8位直接地址@Ri——R0或R1,可以间接寻址@DPTR——可按DPTR中地址对外部存储器寻址bit——8位位地址addr11——11位目标地址addr16——16位目标地址rel——8位地址偏移量$——当前指令的地址七种寻址方式:立即寻址:指令直接给出一个操作数,它紧跟在操作码后,通常称它为立即数(8位或16位)特点:指令码中含有操作数本身直接寻址:指令直接给出操作数所在存储单元的地址,它紧跟在操作码后。访问专用寄存器的唯一方式特点:指令码中含有操作数地址,机器根据该地址寻找操作数寄存器寻址:指令选定的寄存器内容就是实际操作数特点:指令码中含有操作数地址所在的寄存器号,根据该寄存器号可以找到操作数寄存器间接寻址:指令所选中的寄存器内容是实际操作数地址(而不是操作数)特点:地址的地址变址寻址(基址寄存器+变址寄存器间接寻址):此种寻址方式以DPTR或PC作基址寄存器,A作变址寄存器(存放8位无符号数,两者相加形成6特点:操作数=基地址+地址偏移量指令码内隐含存放基地址的寄存器(DPTR/PC)号DPTR/PC中的基地址常常是表格的起始地址,累加器中存放偏移量rel相对寻址:此种寻址方式以程序计数器PC的内容为基地址,加上指令中给出的偏移量rel,所得结果为转移目标地址,用于转移指令。偏移量rel是一8位有符号补码数,范围-128~+127。所以转移范围应在当前PC指针的-128~+127之间某一程序存储器地址中特点:操作码中含有相对地址偏移量rel目标地址=源地址+转移指令字节数rel源地址=相对转移指令的始址RAMSFR特点:操作数是8位二进制数中的某位指令码中含有位地址位地址用bit表示数据传送指令:内部存储器间传送:MOV特点:源操作数在内部,目的操作数也在内部。分四类介绍如下以累加器A为目的字节的传送指令(4条)立即数送累加器MOV A,#data ;A←#data寄存器内容送累加器MOV A,Rn ;A←(Rn) (n=0~7)RAMSFR内容送累加器MOV A,direct ;A←(direct)RAM内容送累加器MOV A,@Ri ;A←((Ri)) (i=0,1)以Rn为目的字节的传送指令(3条)立即数送寄存器MOV Rn,#data ;(Rn)←#data(n=0~7)累加器内容送寄存器MOV Rn,A ;Rn←(A) (n=0~7)RAMSFR内容送寄存器MOV Rn,direct ;Rn←(direct)(n=0~7)以直接地址为目的字节的传送指令(5条)RAMSFRMOV direct,#data;direct←#dataRAMSFRMOV direct,A ;direct←(A)RAMSFRMOV direct,Rn ;direct←(Rn) (n=0~7)RAMSFR之间直接传送MOV direct1,direct2;direct1←(direct2)RAMRAMSFRMOV direct,@Ri ;direct←((Ri)) (i=0,1)以间接地址为目的字节的传送指令(4条)RAMMOV @Ri,#data ;(Ri)←#data(i=0,1)RAMMOV @Ri,A ;(Ri)←(A) (i=0,1)RAMSFRRAMMOV @Ri,direct ;(Ri)←(direct)(i=0,1)(4)16位立即数传送指令MOV DPTR,#data16;DPTR←#data16;DPH←#dataH;DPL←#dataL格式:MOVXMOVXA,@DPTR@DPTR,A;A←((DPTR));(DPTR)←(A)MOVXA,@Ri;A←((Ri))(i=0,1)MOVX@Ri,A;A←((Ri))(i=0,1)特点:单字节指令第1、2条指令可以在外部RAM 64K范围寻址第3、4条指令可以对外部RAM的第0页寻址;寻址范围是0000H~00FFH。程序存储器向累加器传送:MOVC格式:MOVC A,@A+DPTR ;A←((A)+(DPTR))MOVC A,@A+PC ;PC←(PC)+1;A←((A)+(PC))特点:这两条指令为单字节查表指令DPTR、PC中存放被查表的始址功能:根据A中项数,查得表中对应值送入累加器A中。数据交换:XCH,XCHD,SWAP格式:XCHA,Rn;(A)↔(Rn) (n=0~7)XCHA,direct;(A)↔(direct)XCHA,@Ri;(A)↔((Ri)) (i=0,1)XCHDA,@Ri;(A3~0)↔((Ri)3~0) (i=0,1)SWAPA;(A3~0)↔(A7~4)PSWP标志(奇偶标志。XCHDRi中置地址。堆栈操作:PUSH,POP格式:PUSH direct ;SP←(SP)+1;(SP)←(direct)POP direct ;direct←((SP));SP←(SP)-1特点:n和A不能直接用在本指令中,A必须用C(或E0H,n也要用它的物理地址。算术运算指令不带进位加:ADD格式:ADD A,#data ;A←(A)+#dataADD A,Rn ;A←(A)+(Rn) ADD A,@Ri ;A←(A)+((Ri)) (i=0,1)ADD A,direct ;A←(A)+(direct)特点:两个操作数均为8位,其中之一是累加器A;加法操作在ALU中完成,结果送回累加器,运算时产生的标志位在PSW中;不论两操作数是否为带符号数,机器均按带符号数运算。带进位加:ADDC格式:ADDC A,#data ;A←(A)+#data+CyADDC A,Rn ;A←(A)+(Rn)+Cy ADDC A,@Ri ;A←(A)+((Ri))+Cy (i=0,1)ADDC A,direct ;A←(A)+(direct)+CyCyCyCyPSWCy的加法指令相同;本类指令用于多字节加法程序中。增量指令:INC格式:INCA;A←(A)+1INCRn;Rn←(Rn)+1 (n=0~7)INCdirect;direct←(direct)+1INC@Ri;(Rn)←((Rn))+1(n=0,1)INCDPTR;DPTR←(DPTR)+1特点:INCPSWP十进制调整指令:DA格式:DA A操作:若累加器低4位大于9或BCD码加时有半进位AC=1,则A←(A)+06H49BCDCY=1A(A)+60H。特点:DABCD加、BCD减运算。减法指令:SUBB格式:SUBB A,#data ;A←(A)-#data-CySUBB A,Rn ;A←(A)-(Rn)-Cy (n=0~7)SUBB A,direct ;A←(A)-(direct)-CySUBB A,@Ri ;A←(A)-((Ri))-Cy (n=0,1)特点:SUBB是SubtractionBorrow的缩写;本指令用于单字节、多字节减法程序;机器按带符号数运算,并产生PSW中标志;形成OV标志的规则为:正数-正数 不会溢出,故负数-负数 不会溢出,故正数-负数 若差为负,则负数-正数 若差为正,则OV=1减量指令:DECDECA;A←(A)-1DECRn;Rn←(Rn)-1 (n=0~7)DECdirect;direct←(direct)-1DEC@Ri;(Ri)←((Ri))-1 (n=0,1)特点:DEC是Decrease的缩写;DEC A指对PSW中P标志有影响功能:使源地址所对应的RAM单元中内容减1。乘法指令:MUL除法指令:DIV格式:MULAB;BA←(A)×(B);Cy←0DIVA B;A←(A)/(B)的商;;B←(A)/(B);Cy←0,OV←0特点:ML是Multiply的缩写,V是iide的缩写;单字节指令,执行时间为48(4机器周期;操作数均8位无符号数。逻辑运算指令逻辑与指令:ANL格式:ANL A,#data;A←(A)∧#dataANL A,Rn;A←(A)∧(Rn)(n=0~7)ANL A,direct;A←(A)∧(direct)ANL A,@Ri ;A←(A)∧((Ri)) (n=0,1)ANL direct,A ;direct←(direct)∧(A)ANL direct,#data;direct←(direct)∧#data特点:ANLANDLogicalPSWP标志产生影响。用途:可从某字节中取出某几位。逻辑或指令:ORL格式:ORL A,#data ;A←(A)∨#dataORL A,Rn ;A←(A)∨(Rn) (n=0~7)ORL A,direct ;A←(A)∨(direct)ORL A,@Ri ;A←(A)∨((Ri)) (n=0,1)ORL direct,A ;direct←(direct)∨(A)ORL direct,#data;direct←(direct)∨#data特点:ORLORLogicalPSWP标志产生影响。1。逻辑异或指令:XRL格式:XRL A,#data;A←(A)⨁#dataXRL A,Rn;A←(A)⨁(Rn)(n=0~7)XRL A,direct;A←(A)⨁(direct)XRL A,@Ri;A←(A)⨁((Ri))(n=0,1)XRL direct,A ;direct←(direct)⨁(A)XRL direct,#data ;direct←(direct)⨁#data特点:XRLXORLogicalPSWP标志产生影响。用途:令某字节中某几位置取反,其余位不变。累加器清除与求反指令:CLR、CPLCLR A ;A←0CPL A ;A←𝐴特点:CLR是Clearing的缩写;CPL是Complementofone’s的缩写;CLR A指令执行后,Cy=0用途:CLR用于是累加器清零;CPL可用于求某数的补码。移位指令:RL、RLC、RR、RRC格式:RL ARLC ARR ARRC A特点:RLRotateLeft的缩写,RRRotateRight2、4PSWCyP标志产生影响。1倍。控制转移指令无条件转移指令:LJMP(长转移)、AJMP(绝对转移)、SJMP(短转移)、JMP(间接长转移);程序计数器PC格式:LJMPAJMPaddr16addr11;PC←addr16;PC←(PC)+2;PC10~0←指令中的A10~0SJMPrel;PC←(PC)+2;PC←(PC)+relJMP@A+DPTR;PC←(A)+(DPTR)PSWPC23条指令是相对转移指令,汇编时能产生浮动代码,在子程序中很有用。条件转移指令:JZ、JNZ、CJNE、DJNZ累加器A判零转移指令格式:JZ rel ;若(A)≠0PC←(PC)+2;若(A)=0,则PC←(PC)+2+relJNZ rel ;若(A)=0,则PC←(PC)+2;若(A)≠0,则PC←(PC)+2+rel特点:双字节指令,第一字节是操作码,第二字节rel是一个带符号数;rel在编程时采用符号地址,汇编时翻译成内存地址。比较条件转移指令格式:不等则转移CJNE A,#data,relCJNE Rn,#data,rel CJNE @Ri,#data,rel (i=0,1)CJNE A,direct,rel3rel,转移范围为-125~+130A、BCy的形成原则是:A>=BCy=0;A<BCy=11条件转移指令格式:内容减1不等于零则转移DJNZ Rn,rel ;Rn←(Rn)-1 (n=0~7);若(Rn)=0,则PC←(PC)+2;若(Rn)≠0,则PC←(PC)+2+relDJNZ direct,rel;direct←(direct)-1;若(direct)=0,则PC←(PC)+3;若(direct)≠0,则PC←(PC)+3+relDJNZ中,DDecrease,JJump,NNot,ZZeroPSW标志。用途:判断循环是否结束。子程序调用及返回指令:LCALL(长调用)、ACALL(绝对调用)、RET(子程序返回)、RETI(中断返回)格式:LCALL addr16 ;PC←(PC)+3;SP←(SP)+1,(SP)←PC7~0;SP←(SP)+1,(SP)←PC15~8;PC←指令中addr16ACALL addr11 ;PC←(PC)+2;SP←(SP)+1,(SP)←PC7~0;SP←(SP)+1,(SP)←PC15~8;PC10~0←指令中A10~0RET ;PC15~8←((SP)),SP←(SP)-1;PC7~0←((SP)),SP←(SP)-1RETI ;PC15~8←((SP)),SP←(SP)-1;PC7~0←((SP)),SP←(SP)-1空操作指令:NOP格式:NOP ;PC←(PC)+1代码:00000000 00H说明:该指令为单字节指令,其操作使程序计数器PC加“12待或用于修改程序保留空间等情况。布尔处理类指令布尔传送指令:MOV格式:MOV C,bit ;Cy←MOV bit,C ;bit←功能:被传送的不是字节,而是字节中的某位。说明:bit是位地址(二进制8位;bit和bit之间无直接传送指令。布尔状态控制指令:CLR(清除)、SETB(置位)、CPL(取反)格式:CLR C ;Cy←0CLR bit ;bit←0SETB C ;Cy←1SETB bit ;bit←1CPL C ;Cy←𝐶𝑦CPL bit ;bit←𝑏𝑖𝑡功能:CLR是Clear缩写,SETB是SetBit的缩写。布尔逻辑运算指令:ANL、ORL格式:ANL C,bit ;Cy←(Cy)∧(bit)ANL C,𝑏𝑖𝑡;Cy←(Cy)∧𝑏𝑖𝑡ORL C,bit ;Cy←(Cy)∨(bit)ORL C,𝑏𝑖𝑡;Cy←(Cy)∨𝑏𝑖𝑡布尔条件转移指令:JC、JNC、JB、JNB、JBC格式:JC rel ;若(Cy)=1PC←(PC)+2+rel;若(Cy)=0,则PC←(PC)+2JNC rel ;若(Cy)=0PC←(PC)+2+rel;若(Cy)=1,则PC←(PC)+2JB bit,rel ;若(bit)=1PC←(PC)+3+rel;若(bit)=0,则PC←(PC)+3JB bit,rel ;若(bit)=0PC←(PC)+3+rel;若(bit)=1,则PC←(PC)+3JBC bit,rel ;若(bit)=0,则PC←(PC)+3;若(bit)=1,则PC←(PC)+3+rel,且bit←0第4章 汇编语言程序设计R1R0R3R2R2R1R0中。ORGCLR CMOVA,R0 ;取被加数低字节至ADDA,R2 ;与加数低字节相加MOVR0,A ;存和数低字节MOVA,R1 ;取被加数高字节至ADDCA,R3 ;与加数高字节相加MOVR1,A ;存和数高字节MOVA,#0ADDCA,#0 ;加进位位MOVR2,A ;存和数进位位*SJMP$ ;原地踏步ENDBCDASCIIRAMBCDRAM20H单21H22H中。法一编程:ORG1000HMOVR0,#22H;R0←22HMOV@R0,#0;22H←0MOVA,20H;两个BCD数送AXCHDA,@R0;BCDL送22H单元ORL22H,#30H;完成转换SWAPA;BCDH至A的低四位ORLA,#30H;完成转换MOV21H,A;存数SJMP$END法二编程:ORGDIV1000HA,20HB,#10HAB;取BCD码至A;除10H取余,使BCDH→A、BCDL→BORLB,#30H;完成转换MOV22H,B;存ASCII码ORLA,#30H;完成转换MOV21H,A;存ASCII码SJMP$END法三编程:ORG1000HMOVA,20H BCD码ANL A,#0FH ;屏蔽高四ORL A,#30H ;完成转换MOV22H,A ;存ASCII码MOVA,20H BCD码ANL A,#0F0H ;屏蔽低四位A ;交换至低四ORL A,#30H ;完成转换MOV21H,A ;存ASCII码SJMP$ENDR1R0R3R2中。解:求补采用“模-原码”的方法,因为补码是原码相对于模而言的,对于双字节数来说其模为10000H。编程:ORG1000HCLR C ;0→CYCLR A ;0→ASUBBA,R0 ;低字节求补MOVR2,A ;送CLR A ;0→ASUBBA,R1 ;高字节求补MOVR3,A SJMP$ENDRAM20H8BCDFIRST(百位)SECOND(十位、个位)解:可将被转换数除以100,得百位数;余数再除以10得十位数;最后余数即为个位数。FIRST SECOND ORG1000HHBCD: MOVA,20H ;取数MOVB,#64H ;除数DIV AB ;除100MOVFIRSTA MOVA,BMOVB,#0AH ;除数DIV AB ;除10A ;十位数送高位ORL AB ;A为(十位、个位MOVSECONDA;存十位、个位数SJMP$ENDRAM30H31H单元中。ORG1000HSTART:CLRC;0→CYMOVA,30HSUBBA,31H;做减法比较两数JCNEXT;若(30H)小,则转移MOVA,30HXCHA,31HMOV30H,A;交换两数NEXT: SJMP$END8℃,则认为工作正常,否则认为工作故障,并设置故障标志。40H(40H)-(41H)≥842H单元中存放“H单元中存放“H(在此H单元被设定为故障标志。编程:ORGSTART:MOVCLR1000HA,40HC;吸入温度值送A;0→CYSUBBA,41H;(40H)-(41H)→AJCERROR;CY=1,则故障SUBBA,#8;温差小于8℃?JCERROR;是则故障MOV42H,#0;工作正常SJMPEXIT;转出口ERROR:MOV42H,#0FFH;否则置故障标志EXIT: END$;原地踏步实验程序:P1口循环亮灯。P1口全亮,延时,全灭,循环。ORGLJMPORG8000HMainMain:MOVR7,#0Loop:MOVR6,#0DJNZR6,$DJNZR6,$DJNZR6,$DJNZR6,$DJNZR7,LoopCPLP1.0;P1.0取反CPLP1.1;P1.1取反CPLP1.2;P1.2取反CPLP1.3;P1.3取反CPLP1.4;P1.4取反CPLP1.5;P1.5取反CPLP1.6;P1.6取反CPLP1.7;P1.7取反SJMPMainENDP1口走马灯形式亮灯。Main:
ORG 8000HLJMP MainORG 8100HMOV A,#0FFHCLR CMainLoop:CALL DelayRLC AMOV P1,ASJMP MainLoopDelay:Loop:
MOV R7,#0MOV R6,#0DJNZ R6,$DJNZ R6,$DJNZ R6,$DJNZ R7,RETENDP1口由P1.7开关控制灯亮灭。ORG8000HLJMPMainORG8100HMain:JBP1.7,SETLEDCLRLED:CLRP1.0CLRP1.1CLRP1.2CLRP1.3CLRP1.4CLRP1.5CLRP1.6SJMPMainSETLED:SETBP1.0SETBP1.1SETBP1.2SETBP1.3SETBP1.4SETBP1.5SETBP1.6SJMPMainEND双字节数加法30H------3FH8高低)高低)为第二个……3EH(高),3FH(低)为第八个。求其平均值放H(高,H(低,并将其转换成十进制,以压缩BD码形式放H(高),51H,52H。ORG8000HMAIN: MOVR0,#3FHMOVR7,#08HMOV40H,#00HMOV41H,#00HMOV42H,#00HLOOP: MOV A,@R0ADD A,42HMOV 42H,ADEC R0MOV A,@R0ADDC A,41HMOV MOVA,40HADDCMOV40H,ADEC R0DJNZ R7,LOOPMOV R7,#08HLOOP1: CLR MOV A,40HRRC AMOV 40,AMOV A,41HRRC AMOV 41H,AMOV A,42HRRC AMOV 42H,ADJNZ MOV 40H,41HMOV 41H,42HCLR AMOV 50H,AMOV 51H,AMOV 52H,AMOV R7,#10HIBTL2: CLR CMOV A,41HRLC AMOV 41H,AMOV A,40HRLC AMOV 40H,AMOV A,52HADDC A,52HDA AMOV 52H,AMOVA,51HADDCA,51HDAAMOV51H,AMOVA,50HADDCA,50HDAAMOV50H,ADJNZR7,IBTL2SJMP$END寻找最大最小数30H------3FH16R7R6.(编在同一个程序中。ORGMAIN:0000HMOVR5,#10HMOVR0,#30HMOVR7,#00HLOOP:MOVA,@R0CJNEA,07H,LOOP1LOOP3:INCR0DJNZR5,LOOPSJMPMA2LOOP1:JCLOOP3MOVR7,ASJMPLOOP3MA2:MOVR5,#10HMOVR0,#30HMOVR6,#0FFHLOP:MOVA,@R0CJNEA,06H,LOP1LOP3:INCR0DJNZR5,LOPSJMP$LOP1:JNCLOP3MOVR6,ASJMPLOP3END蜂鸣器驱动编制一段程序,用P1.3口控制,使蜂鸣器发出“生日快乐”的音乐。ORG8000HJMPMAINORG800BHJMPINTT0ORG8100HMAIN:MOVSP,#60HMOVTMOD,#01HSETBET0SETBEASETBTR0SETB P1.3MOV 30H,#00HNEXT:MOVA,30HMOVDPTR,#TABLEMOVCA,@A+DPTRMOVR2,AJZENDDANLA,#0FHMOVR5,AMOVA,R2SWAPAANLA,#0FHJNZSINGCLRTR0JMPD1SING:DECAMOV22H,ARLAMOVDPTR,#TABLE1MOVCA,@A+DPTRMOVTH0,AMOV21H,AMOVA,22HRLAINCAMOVCA,@A+DPTRMOVTL0,AMOV20H,ASETBTR0D1:CALLDELAYINC30HJMPNEXTENDD:CLRTR0JMPSTART0INTT0:PUSHPSWPUSHACCMOVTL0,20HMOVTH0,21HCPLP1.3POPACCPOPPSWRETIDELAY:MOVR7,#02MOV R4,#187MOV R3,#248DJNZ R3,$DJNZ R4,DELAY1DJNZ R7,DELAY0DJNZ RETDB82H,01H,81H,94H,84H,0B4H,0A4H,04HDB82H,01H,81H,94H,84H,0C4H,0B4H,04HDB82H,01H,81H,0F4H,0D4H,0B4H,0A4H,94HDB0E2H,01H,0E1H,0D4H,0B4H,0C4H,0B4H,04HDB82H,01H,81H,94H,84H,0B4H,0A4H,04HDB82H,01H,81H,94H,84H,0C4H,0B4H,04HDB82H,01H,81H,0F4H,0D4H,0B4H,0A4H,94HDB0E2H,01H,0E1H,0D4H,0B4H,0C4H,0B4H,04H,00HTABLE1:DW64260,64400,64524,64580,64684,64777,64820,64898DW64968,65030,65058,65110,65157,65178,65217ENDHC164串并转换P174HC164LED数码管显示1,2,38,,CLKEQUP1.0DINAEQUP1.1DINBEQUP1.2CLR164 EQUORG0000HLJMP ORG0100HMAIN:MOV ;设置堆栈向NOP ;设置以下端口初始化CLR CLK ;CLK=0SETB DINB ;DINB=1CLR CLR164 ;CLR=0输出端口清零SETB CLR164 ;CLR=1MOV A,#0AAH ;用户输出数据初始MOV R4,#08HSLCHG: RLCAMOV DINA,C ;串行输出一位数SETB CLK ;移位时钟NOPCLR NOPDJNZ R4,SLCHGSJMP $ ;程序结束,END步进电机编写一段程序,通过单片机的P1口控制步进电机的控制端,使其按一定的控制方式进行转动。分别可以用双四拍(AB,BC,CD,DA,AB…..)方式,单四拍方式(A,B,C,D,A…..)方式等。BAEQUP1.0BBEQUP1.1BCEQUP1.2BDEQUP1.3ORG8000HLJMP ORG8100HMAIN:ACALL SMRUN: ;电机控制方式为单双八MOVP1,#08H ;AACALL MOVP1,#0CH ;ABACALL MOVP1,#04H ;BACALL MOVP1,#06H ;BCACALL MOVP1,#02H ;CACALL MOVP1,#03H ;CDACALL MOVP1,#01H ;DACALL MOVP1,#09H ACALL SJMP SMRUN ;循环转动;MOVR4,#10DELAY1:MOVR5,#250DJNZR5,$DJNZR4,DELAY1RETEND乘法实验编制一段程序,用30H,31H(高)2个二进制数,乘以40H 1个二进制数,结果放50H,51H,52H(高)中ORG 0000HMAIN: MOV MOV R3,30HMOV R6,#00HMOV R7,40HLCALL QMULMOV 52H,R5MOV 51H,R6MOV 50H,R7SJMP $QMUL: MOV R4,#00H ;无符号双字节乘法子程序MOV R5,#00HMOV R0,#10HCLR CNMLP: MOV RRC AMOV R4,AMOV A,R5RRC AMOV R5,AMOV A,R6RRC AMOV R6,AMOV A,R7RRC AMOV R7,AJNC NMLNMOV A,R5ADD A,R3MOV R5,AMOV A,R4ADDC A,R2MOV R4,ANMLN: DJNZ MOV A,R4RRC AMOV R4,AMOV A,R5RRC AMOV R5,AMOV A,R6RRC AMOV R6,AMOV A,R7RRC AMOV RETEND第5章 MCS-51定时/计数器、串行口及中断系统16位定时计数器(88H);C/TTMOD(89H),不能位寻址定时器的工作方式:013位定时计数器,注意:TL05TH0共同组成1:16位定时计数器方式2:自动重装入的8位定时计数器,溢出后(TF0=0)由TH0→TL0方式3:T0成为两个独立的8位计数器TL0作为定时计数器;TH0仅作定时器用TL0的控制用原T0的,TH0用原T1的控制位T1工作在方式0~2,溢出时送串行口,经常作为串行口波特率发生器计数器初值:设计数模值为M,计数初值设定为TC,计数器计满为零所需的计数值为C,则:TC=M-C(M=213,216,28)定时器初值:T=(M-TC)T机器FOSC=12MHZ,2MS所需的定时器的初值方式2,方式3:TMAX=0.256MS,所以必须将工作方式设在方式0或方式1方式0:TC=213-2MS/1US=6192=1830HTL0=10H,TH0=0C1H方式1:TC=216-2MS/1US=63536=0F830HTL0=30H,TH0=0F8H串行通信:数据一位接一位顺序传送,可只用一根数据线传送多位信息串行通信有两种基本方式:同步通信和异步通信3种MCS-51单片机片内有一个串行接口,可提供同步或全双工异步串行通信方式.与串行口有关的特殊
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川德阳市2026届高三语文下学期第二次诊断考试
- 妊高症护理中的沟通技巧
- 2026年护理核心制度培训课件
- 类型参数在系统架构设计中的影响
- 2026年地理知识普及与习题
- 2026年音乐教育专业音乐素养与教学能力测试
- 2026年专职网格员面试信息采集与矛盾调解情景题
- 恙虫病患者的病情观察
- 2026年高中生职业生涯规划面试指南
- 2026年地下流体观测技术中级考点
- 2025向量化与文档解析技术加速大模型RAG应用
- 辅警心理辅导讲座课件
- 系统性红斑狼疮护理疑难病例讨论
- 胖东来店长培训课件
- 丛林寺院管理制度
- 库房人员安全试题及答案
- 2024年嘉兴市属国有企业招聘考试真题
- 人音版七年级下册《表花》课件
- 中药羌活简介
- 施工工地汛期安全教育培训
- 湘教版地理八年级下册 期中综合测试卷(含答案)
评论
0/150
提交评论