找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2296|回复: 1
收起左侧

上传一个单片机实验代码

[复制链接]
ID:262 发表于 2014-6-18 00:51 | 显示全部楼层 |阅读模式
实验二
实验要求:
P3.2、P3.3、P3.4、P3.5作输入口接四个按钮开关SW1、SW2、SW3、SW4;P1.2、P1.3 、P1.2,P1.3作输出口接发光二极管,编写程序读取开关状态,将此状态在发光二极管上显示出来。编程时应注意P3.2、P3.3、P3.4、P3.5作为输入口时应先置1,才能正确读入值。
代码:
ORG 0000H ;复位开始
         LCALL MAIN;转去主程序执行
         ORG 0030H;主程序从0030H开始
MAIN:
         MOV A, #0FFH ;预设初始化的值是为1111 1111
         LJMP LOOP ;不断循环
LOOP:  
         MOV P3,A     ; 初始化 p3作为输入口应为1
         MOV P1,P3       ;开关按下,p3口就得到了当前的值,并赋值给p1,点亮相应的LED
         RET  ;返回
END
实验三:
实验要求:
       用单次脉冲申请中断,在中断处理程序中对信号进行反转输出
代码:
  ORG 0000H;
         LJMP MAIN;
         ORG 0003H ;        INT0中断的入口程序地址
         LJMP INT;         中断程序的标号
         ORG 0400;
MAIN:  
SETB P1.0; 置位p1.0,
                MOV TCON,#01H;  选择外部中断0(INT0)触发方式控制位。
                MOV IE,#81H;  开所有中断且中断源为INT0
                LJMP $;     一直跳转到当前地址,也就是循环
                ORG 0100;      INT的起始地址
INT:       CLR EX0;           关INT0中断
                PUSH ACC;       然后保护现场
                PUSH PSW;
                CPL P1.0;          将p1.0取反
                POP PSW;    恢复现场
                POP ACC;
                SETB EX0;  开中断
                RETI; 中断返回
       END


实验四
实验展示:
单片机内部定时器中断方式计时每隔一秒钟输出状态反转一次
X= 2M -(t/12*T osc)t的值是50ms, x值为15536就是3CB0。
代码:      
ORG 0000H;
           LJMP MAIN;
           ORG 000BH;
           LJMP INT;
MAIN:
         MOV TMOD,#01H;选择定时器0 工作方式一
         MOV TL0,#0B0H;设置时间常数3CB0
         MOV TH0,#03CH;

         SETB P1.0; 设置p1.0的初始状态
         MOV R0,#014H;设置秒计数值 20.  20*50ms=1s
         MOV IE,#82H; 开所有中断且选择中断源为定时器0
         SETB TR0; 启动定时器工作
         LJMP $; 死循环
INT:
         CLR ET0; 关中断
         PUSH ACC; 保护现场
         PUSH PSW
         MOV TL0,#0B0H;重新赋值
         MOV TH0,#03CH;                     
         CJNE R0,#00H,LOOP;如果R0==0,就继续执行下去 否则LooP
         CLR EA;关中断
         MOV R0,#014H;如果已经到1S了重新计时
          CPL P1.0;        取反p1.0
LOOP:
         DEC R0;   如果还木有到1s那么就将计数值自减
         POP PSW;  恢复现场
         POP ACC;
         MOV IE,#82H; 开中断
         RETI; 中断返回
END;


实验五
实验展示:
PC机串行口设置波特率4800,启始位1位,数据为8位,停止位1位,用交叉串行线连接单片机J232。 编程实现向PC机串行发送1-10十个数据,波特率4800,工作方式1。
通常采用T1的工作方式2,即自动重装载方式作为波特率发生器

代码
         ORG 0000H;
         LJMP MAIN;
         ORG 0100H;
MAIN:
         MOV TMOD,#20H; 定时器T1 工作方式2
         MOV TL1,#0F3H; 通过公式去计算对应的初始值
         MOV TH1,#0F3H;
         MOV IE,#98H;  开全部中断且开串行中断,且中断源是T1
         SETB TR1;         启动定时器1                  
         MOV SCON,#50H; 设定串行口的工作方式为方式1
         MOV PCON,#80H;比特率加倍
         MOV R0,#00H; 发送数据计数器 从0开始
         MOV A,#00H; 准备发送的数据 先初始化成0
WRITE:
         CLR  TI; 发送中断标志位发送完数据之后会变成1 发送数据之前要清零
         INC A; 从1开始发送发送到10即可停止
         MOV SBUF,A; 发送数据
WAUT:
         JBC TI,CONT; 如果发送数据完毕那么就转去CONT执行 发送下一个数据
         LJMP WAUT; 否则就一直等到该数据发送直到发送完毕
CONT:
         CLR TI; 清零,该句可以省略
         INC R0; 发送完一帧数据以后 计数值就加1
         CJNE R0,#0AH,WRITE ;  还木有发送到10 那就继续发送 否则循序执行
         END;
实验七
实验要求:
根据动态显示原理在四位LED上显示1234
代码:
ORG              0000H        
LJMP      MAIN
ORG           0100H      
MAIN:
              MOV P0,#00H;  初始化 哪一位都不选
              MOV P2,#00H;
LOOP:
               SETB P0.0选择第一位显示1
         MOV P2,#06H 段的码数表示1
                LCALL DELAY   显示延迟

              MOV P0,#00H; 清空数码管
              SETB P0.1选择第二位显示2
               MOV P2,#5BH 段的码数表示2
               LCALL DELAY

              MOV P0,#00H;
              SETB P0.2 选择第三位显示3
               MOV P2,#4FH;
               LCALL DELAY

MOV P0,#00H;
              SETB P0.3选择第四位
               MOV P2,#66H
               LCALL DELAY

              LJMP LOOP 不断的循环 动态的显示1 2 3 4

DELAY:   MOV R7,#4
DELY1:  MOV R6,#248
              NOP            
DELY2: DJNZ      R6,DELY2
              DJNZ R7,DELY1
              RET  
END

实验十三

实验要求:
开关3S2接通P1.7时工作,这时P1.7=1,继电器控制线圈通电吸合,P1.7=0,继电器断电释放。当3S2接到GND时,继电器始终断电释放。


ORG 0000H;
        LJMP MAIN;
MAIN:
MOV P1 ,#7FH; 设置p1口的初值 使得p1.7为0
LOOP:
       CPL P1.7; 取反操作
       LCALL DELAY;延迟
       LJMP LOOP; 一直执行取反-延迟操作
DELAY:
       MOV R7,#200;
DELAY1:
      MOV R6,#123
       NOP
DELAY2:
       DJNZ R6,DELAY2;
       DJNZ R7,DELAY2;
       RET
END

回复

使用道具 举报

ID:63641 发表于 2014-7-5 20:39 | 显示全部楼层
谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表