一起答

2012年微型计算机原理与接口技术自考题模拟(5)

如果您发现本试卷没有包含本套题的全部小题,请尝试在页面顶部本站内搜索框搜索相关题目,一般都能找到。
  1. 用89C51的P1口,监测某一按键开关,使每按键一次,输出一个正脉冲(脉宽随意)。

  2. 如下图所示,用8255A芯片扩展单片机的I/O口,8255的A口作输入,A口的每一位接一个开关,用B口作为输出,输出的每一位接一个发光二极管。现要求某个开关接高电平(为1)时,相应位上的发光二极管就亮(输出低电平0)。设8255的A口地址为70H,B口地址为71H,C口地址为72H,控制口地址为73H。完成下面程序填空。

    START:MOV DFTR, ①

    MOV A, ②

    MOVX ③ ,A

    MOV DPTR, ④

    MOVX A, ⑤

    CPL ⑥

    INC ⑦

    MOVX @DPTR, ⑧

    AJMP START

    答:①______;②______;③______;④______;

    ⑤______;⑥______;⑦______;⑧______。

  3. 下面程序的功能是______。

    ORG 4000h

    MOV R0,#20H

    MOV R7,#0AH

    MOV A,@R0

    DEC R7

    LOOP:INC R0

    MOV 40H,@R0

    CJNE A,40H,NEXT

    NEXT:JC LOOP1

    MOV A,40H

    LOOP1:DJNZ R7,LOOP

    MOV 41H,A

    HERE:SJMP $

    END

  4. 下面程序的功能是______。

    BTOD1:MOV A,R2

    MOV B,#100

    DIV AB

    MOV R6,A

    MOV A,#10

    XCH A,B

    DIV AB

    SWAP A

    ADD A,B

    MOV R5,A

    RET

  5. 片内RAM40H开始的单元内有10字节的二进制数,下面程序是完成找出其中最大值并存于50H单元中。

    START:MOV R0,#40H ;数据块首地址送R0

    MOV R7,#09H ;比较次数送R7

    MOV A,R0 ;取数送A

    LOOP: INC R0

    MOV 30H,@R0 ;取数送30H

    CJNE A,30H,NEHT ;(A)与(30H)相比

    NEXT:JNC BIE1 ;(A)≥(30H)转BIR1

    MOV A,30H ;(A)<(30H),大数送A

    BIE1: DJNZ R7,LOOP ;比较次数减1,不为0,继续比较

    MOV 50H,A ;比较结束,大数送50H

    RET

    错误:______

    改正:______

  6. 下面子程序是从串行接口接受一个字符。

    START:MOV TMOD,20H ;定时器T1工作于模式2

    MOV TH1,#0E8H ;设置波特率为1200b/s

    MOV TL1,#0E8H

    SETB TR1 ;启动T1

    MOV SCON,#50H ;串行接口工作于方式1,允许接收

    L1: JNB R1,L1 ;等待接收数据,未接收到数据,继续等待

    CLR R1 ;接收到数据,清R1

    MOV A,SBUF ;接收到数据送A

    RET

    错误:______

    改正:______

  7. 假设(R0)=30H,(20H)=38H,执行指令MOV R0,20H后(R0)=______。

  8. 执行如下三条指令后,30H单元的内容是______。

    MOV R1,#30H

    MOV 40H,#0EH

    MOV @R1,40H

  9. 对8255的C口D3位置1的控制字是:______。

  10. 串行口方式3发送的第9位数据要事先写入______寄存器的______位。

  11. 若采用6MHz的晶体振荡器,则MCS-51单片机的振荡频率为______,机器周期为______。

  12. MCS-51单片机的一个机器周期是由______个状态构成,一个状态又包含了______节拍。

  13. 单片机程序的入口地址是______,外部中断1的入口地址是______。

  14. #include<stdio.h>

    struct mine{int qa,qb,qc;};

    main()

    {struct mine s[2]={{1,2,3},{4,5,6}};

    int answer;

    answer=s[0].qa%s[1].qb;

    printf("%d\n",answer);

    }

    程序运行结果是:______

  15. 编写程序,从键盘输入6名学生的5门成绩,分别统计出每个学生的平均成绩并输出。

  16. 8051单片机有______条地址线,它寻址的地址范围______。

  17. #include<stdio.h>

    int add(int a,int b)

    {int c;

    c=a+b:

    return c;

    }

    void print(int t)

    {printf("z=%d\n",t);}

    main()

    {int x,y,z;

    x=1;y=2;

    z=add(x,y);

    print(z);

    }

    程序运行结果是:______

  18. #include<stdio.h>

    main()

    {int i,index,n:

    int a[10];

    scanf("%d",&n);

    for(i=0;i<n;i++)

    scanf("%d",&a[i]);

    index=0;

    for(i=1;i<n;i++)

    {if(a[i]<a[index])index=i;}

    printf("min=%d,index=%d\n",a[index],index);

    }

    程序运行时输入5 7 9 5<回车>,则程序运行结果是:______

  19. 输入10个整数存入一维数组,再按逆序重新存放后再输出。

    #include<stdio.h>

    main()

    {int i,j,a[10],k;

    for(i=0;i<=9;i++)scanf("%d",&a[i]);

    for(i=0,j=9;i<=4;i++,j--)

    {k=a[i];a[i]=a[j];a[j]=k;}

    for(i=0;i<=9;i++)printf("%d",a);

    }

    错误:______

    改正:______

  20. #include<stdio.h>

    int fun(char*s)

    {char*p=s;

    while(*p!='\0')p++;

    return(p-s);}

    main()

    {printf("%d\n",fun("hello world"));

    }

    程序运行结果是:______

  21. #include<stdio.h>

    #include<conio.h>

    main()

    {

    int i,j;

    int sum,k=0;

    for(i=0;i<5;i++);

    {

    printf("input a number:");

    scanf("%d",k);

    sum+=k:

    }

    printf("the sum is%d",sum);

    }

    错误:______

    改正:______

  22. 以下程序计算1×2×3×……×10的和。

    #include"stdio.h"

    main()

    {int i,s=1;

    do

    {s=s+i;i++;

    }while(i<=10)

    printf("%d\n",s);

    }

    错误:______

    改正:______

  23. 以下程序运行时从键盘输入字符串ABCDE按回车键结束输入,使输入字符串中的A和B转换为字符#输出,其他字符输出为*。

    #include"stdio.h"

    main()

    {char c:

    while((c=getchar())!='\0')

    {switch(c)

    {case'A':

    case'B':putchar('#');break;

    default:putchar('*');}

    }

    }

    错误:______

    改正:______

  24. 下面程序的功能是用“辗转相除”求两个整数的最大公约数。请填空。

    #include<stdio.h>

    main()

    {int r,m,n;

    scanf("%d%d",&m,&n);

    if(m<n)______

    r=m%n:

    while(r){m=n;n=r;r=m%/n};

    printf(“%d\n",n);

    }

  25. 下面程序的功能是将字符串s中所有的字符a删除。请填空。

    #include<stdio.h>

    void main()

    {char s[80];

    int i,j=0;

    gets(s);

    for(i=0;s[i]!='\0';i++)

    if(s[i]!='a')______;

    s[j]='\0';

    puts(s);}

  26. 芯片8255A在方式1输出时,它和外设问的联络信号是(   )

    • A.和IBF
    • B.和
    • C.和IBF
    • D.和
  27. int a=6;则表达式a+ =a- =a*a的值是______。

  28. 若a=2,b=4,则表达式!(x=a)||(y=b)&&0的值是______。

  29. 8031单片机的定时器T0用作计数方式时是(   )

    • A.由内部时钟频率定时,一个时钟周期加1
    • B.由内部时钟频率定时,一个机器周期加1
    • C.由外部计数脉冲计数,正跳变加1
    • D.由外部计数脉冲计数,一个机器周期加1
  30. 在用接口传信息时,如果用一帧来表示一个字符,且每一帧中有一个起始位、一个结束位和若干个数据位,该传送属于(   )

    • A.串行传送
    • B.并行传送
    • C.同步传送
    • D.连续传送
  31. PSW中的RS1和RS0用来(   )

    • A.选择工作寄存器区号
    • B.指示复位
    • C.选择定时器
    • D.选择工作方式
  32. P0口作数据线和低8位地址线时(   )

    • A.应外接上拉电阻
    • B.不能作I/O口
    • C.能作I/O口
    • D.应外接高电平
  33. 共阳极显示管点亮时输入电平是(   )

    • A.高电平
    • B.低电平
    • C.低电压
    • D.接地
  34. 8051/8031型单片机中断标志位的个数是(   )

    • A.6
    • B.5
    • C.4
    • D.7
  35. MCS-51单片机I/O接口寻址方式是(   )

    • A.独立寻址
    • B.相对寻址
    • C.存储器映射
    • D.绝对寻址
  36. 定义位地址的伪指令是(   )

    • A.DS
    • B.DB
    • C.BIT
    • D.DW
  37. MCS-51外部数据总线组成是(   )

    • A.P0
    • B.P1
    • C.P2
    • D.P3
  38. 以下表述错误的是(   )

    • A.ASCII码文件是文本文件
    • B.ASCII码文件占用内存较少
    • C.二进制文件占用内存较多
    • D.语句FILE fp;定义一个名为fp的文件指针
  39. 下列字符数组长度为5的是(   )

    • A.char a[10]={'h','a','b','c','d'};
    • B.char b[]={'h','a','b','e','d','\0'};
    • C.char c[]={'h','a','b','c','d'};
    • D.char d[6]={'h','a','b','c','\0'}
  40. 对下列结构体变量stu的成员引用不正确的是(   )

    struct student

    {int m;float n;}stu,*p;

    • A.p.stu.n
    • B.P->m
    • C.(*p).m
    • D.stu.n
  41. 如果A=125,B=-78,则[A+B]补是(   )

    • A.00101110
    • B.01101111
    • C.00101111
    • D.00100111
  42. 以下集成块型号中属于MCS-51系列单片机型号的是(   )

    • A.8052AH
    • B.80C198
    • C.80C196KB
    • D.80196KC