1. 单片机指令
一、
1、单片机全称单片微型计算机,就是将CPU、存储器、I/O口等集成在一个芯片内
2、设置工作模式,设置是否开中断,置入计数初值
3、P3.0,RXD(串行输入)
P3.1,TXD(串行输出)
P3.2,/INT0(外部中断0)
P3.3,/INT1(外部中断1)
P3.4,T0(定时器0外部输入)
P3.5,T1(定时器1外部输入)
P3.6,/WR(外部数据存储器写选)
P3.7,/RD(外部数据存储器读选)
4、SMOD(模式控制寄存器),TCON(定时器控制寄存器),IE(中断控制寄存器)
5、寻址方式就是寻找操作数或操作数地址的方式,MCS-51单片机有七种寻址方式:立即数寻址,直接寻址,间接寻址,寄存器寻址,寄存器间接寻址,变址寻址,相对寻址
6、8051有五个中断源:外部中断0、T0溢出中断、外部中断1、T1溢出中断、串口中断;其对应的入口地址分别为:0003H,000BH,0013H,001BH,0023H
7、书上讲的应该是有21个特殊功能寄存器,PSW的状态标志位从第7位到第0位分别为:Cy(借位或者进位标志位)、Ac(辅助进位标志位也叫半进位标志位)、F0(由用户来定义)、RS1、RS0(这两位合起来定义单片机选用四组通用寄存器中的哪一组)、OV(溢出标志位)、未用、P(奇偶校验位)
8、定时器/计数器有2种工作方式:定时方式和计数方式,定时方式时一个时钟周期定时器加1,计数方式时时钟脉冲为外部信号(引脚P3.4或者P3.5),如果你问的是工作‘模式’的话自己网上查一下,很容易找
二、
5、9、10是对的,其它是错的
三、
1、SP)=41H,(DPTR)=3412
2、(SP)=40H,(DPTR)=3412
3、(SP)=41H,(DPTR)=3413
4、(A)=0FAH,(B)=03H
5、(30H)=0EH
6、这个题目有错误,250后面不应该有H吧
没有的话应该是:约2.5ms 自己再算算
四、
1.将片外RAM 8000H单元的内容传送到片内RAM 20H单元。
MOV DPTR,#8000H
MOVX A,@DPTR
MOV 20H,A
2.将片外RAM 4000H单元的内容传送到片内RAM 20H单元。
MOV DPTR,#4000H
MOVX A,@DPTR
MOV 20H,A
3.将片内RAM 50H单元与51H单元的内容交换
MOV A,50H
MOV B,51H
XCH A,B
MOV 50H,A
MOV 51H,B
4.将片内RAM 20H单元的内容传送到A中
MOV A,20H
5.将片内RAM 60H单元的内容传送到A中
MOV A,60H
6. 使累加器A的内容高四位取反,低四位清零
CPL A
ANL A,#F0H
7. 使累加器A的内容最四位置1,低四位清零,其余位保持不变。
是最高位置1吗??是的话
ORL A,#80H
ANL A,#F0H
8.分别用指令实现下列各小题的要求:
1) T0开中断(允许中断),其余禁止中断
MOV IE,#82H
2) T1、串行口开中断(允许中断),其余禁止中断
MOV IE,#92H
3) 全部开中断
MOV IE #FFH
4) 全部禁止中断
CLR IE
五、计数初值=65536-(50ms/1us)=15535=3CAFH
2. 如何让单片机定时与电脑时间同步
那你的好好设计一下,最好能有时间补偿程序,因为单片机在执行指令时需要浪费时间,加上系统延迟等等问题时间不可能非常准确的,只能想办法进行时间补偿或者其他
3. 我用51单片机实现数码管动态显示时不同步
延时太长,一般0.5~1ms左右。
另外,你这是共阴的,程序一般这样:开位选,送字段码,延时1ms,关位选,下一位开位选,送字段码,延时1ms,关位选 。。。
CLR P2.0
MOV P0,A
LCALL DELAY :1ms
SETB P2.0
CLR P2.1
MOV P0,A
LCALL DELAY
SETB P2.1
4. 51单片机小车左右不能同步是什么问题C语言怎么写
小车电机是通过pwm脉宽调速:
1、单片机是否能同时产生pwm。一般来说在程序上是有一点延迟的。
2、电机两端的电压是否相同。如果驱动电路性能不好,是会有偏差的。
3、此外左右两侧车轮材料,压力导致的摩擦力是否一致。如果不同也是会有误差的。
一般来说都会对小车车轮的转速进行测量,反馈给控制器,如果转速不相等,是控制pwm来调节的。如果是循迹,是要加传感器矫正的。
5. 关系单片机执行指令时的问题
这个很简单啊,比如我想让P1口的0-7个位同时输出1
你可以这样写:
P1=0XFF;
也可以这样写:
P1_1=P1_2=P1_3=P1_4=P1_5=P1_6=P1_7=0; //要先声明P1口位变量
6. 多个独立的单片机系统怎样实现完全同步
一般的单片机没有并行结构,所谓的"同时"其实都是按程序设计先后执行的,只是可能耗费的时间极短(一秒执行十几万甚至几百万条以上的指令)让人觉得他好像在同时进行.其实读读程序,了解单片机的硬件结构就知道的.想要真正的"同时",就必须用几个单片机一起工作才行.
PS:FPGA易于实现真正的"并行"处理.但其实编程后的电路,已经是相互独立的了,只是用一个时钟驱动着,放在一块密封的芯片中而已.
简单的说,电路/计算机 是靠速度取胜的.
7. 51单片机指令
TF1是定时器1溢出标志位,$是取地址。JNB TF1,$ 实现的功能是查询定时器1溢出标志位,如果为0,跳转到本条指令继续执行(即继续查询)直到定时时间到,TF1置位,才执行下一条指令。
给你注释一下:
MOV TMOD,#10H //设置定时器工作方式(定时器1,工作方式2)
SETB TR1 //开启定时器1
LOOP: MOV TH1,#0D8H //装初值D8F0H 即55536,定时10mS(晶振12M)时间随晶振改变
MOV TL1,#0F0H
JNB TF1,$ //查询等待定时器1中断
CLR TF1 //定时器溢出标志位清0(定时时间到后硬件自动给TF1置位,需软件清0)
CPL P1.1 //P1.1取反
SJMP LOOP //跳到LOOP处循环(是个死循环)
该段程序实现的功能是:每隔10mS对P1.1取反一次。(10mS当然是晶振为12M的情况下)
8. 单片机计时和for循环无法同步进行问题
先说说这个;
11111111远大于 i 所能表达的最大值 256,因此在第一个for中就是个死循环了,进去就出不来了;
另外在中断例程里尽量不要放入太多代码,非关键代码应该放到中断例程外来运行;
9. 用52单片机怎样控制两个步进电机不同步运行,谢谢了
用两个IO口分开控制电机啊。什么时候运行就什么时候给信号驱动就可以了。
10. 单片机指令
问题补充:3.分析题:假设(SP)=40H,(DPTR)=3412,分析连续执行下列指令序列后DPTR及SP的内容。
PUSH DPL;
PUSH DPH;
POP 08H;
INC DPTR
(1)PUSH DPL (SP)=41H (41H)=34H
(2)PUSH DPH (SP)=42H (42H)=34H
(3)POP 08H (08H)=34H (SP)=41H
(4)INC DPTR DPTR=3413H
4. 执行下列指令后,各有关存储单元(即A、B)的内容如何?
MOV A, #30H A=#30H
MOV B, #0AFH B=#0AFH
XCH A, B A=#0AFH B=#30H
SWAP A A=#0FAH
5.执行如下三条指令后,30H单元的内容是多少?
MOV R1,#30H R1=#30H
MOV 40H,#0EH (40H)=#0EH
MOV @R1,40H (30H)=(40H)=#0EH
6.已知fosc=6MHZ,求下面延时子程序的延时时间。
DELAY: MOV R6,#10 ;
MOV R7,#250H ;
D2: DJNZ R7,D2 ; 250*2机周*1US=0.5MS
D1: DJNZ R6,D1 ; 0.5*10=5MS
RET ;
实际延时周期为【(500+2+1)*10+2+1】机周*1us/机周=5033us
四、程序设计题
1.使累加器A的内容最四位置1,低四位清零,其余位保持不变。
这个题没看明白,不好意思
2.分别用指令实现下列各小题的要求:
____
1) INTO、T0开中断(允许中断),其余禁止中断
MOV IE,#03H
2) T1、串行口开中断(允许中断),其余禁止中断
MOV IE,#98H
3) 全部开中断
MOV IE,#0FFH 或 SETB IE
4) 全部禁止中断
MOV IE,#00H 或 CLR IE
前面那几道题YL已经说了,我就不回了,呵呵