求一套单片机答案 请于13号之前回答

1.若累加器A中的数据为67H,则PSW中的P=_________
2. 一个机器周期= _________个状态周期=12个振荡周期。
3.89C51的堆栈是按照_________ 的原则进行存取的RAM区。
4. 用一条指令实现以下功能:
若A中数据不等于200,则程序转至PROM_________
5. 为了使10H—17H作工作寄存器使用RS1, RS0的取值为 _________
6. 89C51中21个特殊功能寄存器,其地址凡是能被8整除的都有 _________ 寻址功能。
7. 89C51单片机有片内ROM容量 _________ , RAM容量 _________
8. 某串行通信中有1个起始位,8个数据位和1个停止位,应选择的异步串行通信方式为 _________
9. 在89C51单片机中,SP存放的是_________
10. 串行通信按照数据传送方向可分为 _________ , _________,全双工
11. 当89C51引脚ALE信号有效时,表示从p0口稳定地送出了_________信息.
12 若位寻址区30H≠0,则将30H清0,并使程序转至PROM,则实现该功能的指令为: _________
13. 89C51中21个特殊功能寄存器,其地址凡是能被8整除的都有_________寻址功能。
14. 在89C51单片机中,SP存放的是 _________
1. 89C51单片机中断系统有哪几个中断源,它们的中断入口地址分别是多少?当中断处理程序的长度
大于8个字节时如何处理?
2.89C51内部设有几个定时/计数器?它们是由哪些特殊功能寄存器组成的?
3在89C51单片机的ROM空间,0000H-0023H有什么特殊用途,用户应怎样合理安排?
4简述51系列单片机的串行通信工作模式及其特点。
编程:
1.将外部RAM中20H单元中的内容送入外部RAM中1000H单元中
2.将内部RAM中20H单元中的内容送入外部RAM中1000H单元中
3. 已知89C51的 fosc=6MHZ,波特率是2400b/s,设SMOD=1,则定时/计数器T1的计数初值是多少?并进行初始化编程。
4.已经89C51的fosc=12MHz,用定时/计数器T1编程实现P1.0和P1.1引脚上分别输出周期为2ms和500us的方波。

  1、P=1
  2、6
  3、先进后出
  4、CJNZ A,#200H,PROM
  5、RS1=1,RS0=0
  6、位
  7、4kB 128B
  8、方式1
  9、数据和地址
  10、单工、半双工
  11、低8位地址
  13、位
  14、同9
  1、外部中断0 0003H
  定时/计数器0 000BH
  外部中断1 0012H
  定时/计数器1 001BH
  串行口中断 0023H

  使用跳转指令
  2、2个,TCON、TMOD
  3、0000h是主程序入口地址;
  0003H是外中断的入口地址;
  000BH是定时中断入口地址;
  0013H是外中断入口地址
  001BH定时中断入口地址
  0023H是通讯中断入口地址。

  使用跳转指令
  4、51单片机内部有一个全双工的串行通信接口,包含串行口接收和发送缓冲寄存器SBUF,,,,,,这部分抄吧。。。
  编程
  1、MOV DPTR,#0020H
  MOVX A,@DPTR
  MOV DPTR,#1000H
  MOVX @DPTR,A
  2、
  MOV DPTR,#0020H
  MOV A,@DPTR
  MOV DPTR,#1000H
  MOVX @DPTR,A
  3、初值为F3H,
  void UART_init(void)
  {
  SCON = 0x50;//串口工作方式1,8位异步
  TMOD = 0x20;//定时器1工作方式2
  TH1 = 0xFD;
  TL1 = 0xFD;
  TR1 = 1;
  ES = 1;
  EA = 1;
  }
  4、
  #include<reg51,h>
  sbit rect_wave1=P1^0;//2ms方波
  sbit rect_wave2=P1^1;//500us方波
  void main(void)
  {
  TMOD=0X10;//T1方式1
  TH1=0xfe;//赋初值
  TL1=0x0c;
  IE=0X00;
  ET1=1;
  EA=1;
  TR1=1;//启动定时
  for(;;);
  }
  /***********中断服务程序*******/
  void int1() interrupt 3
  {
  TH1=0xfe;
  TL1=0x0c;
  TF1=0;
  rect_wave2=!rect_wave2;//输出取反
  i++;
  if(i==4)
  {
  i=0;
  rect_wave1=!rect_wave1;

  }

  }
温馨提示:答案为网友推荐,仅供参考