实验二:外部中断与定时器/计数器中断实验

来源:互联网 发布:淘宝化妆品店铺起名 编辑:程序博客网 时间:2024/06/05 01:08

//若系统时钟频率为60MHZ,编写软件实现:按一下按键,产生一次外部中断0中断信号,启动T1计时,使P1.0输出周期为1ms的方波。

1、汇编查询       ORG 0000H           //汇编查询       LJMP MAINMAIN:  MOV  SP,   #60H       MOV  TMOD, #20H      //工作方式选择为       MOV  TL1,  #06H     //设置定时器1初值       MOV  TH1,  #06H       CLR  TR1       SETB ET1             //中断初始化       SETB EX0       CLR  IT0       SETB EAEXINT0:JB P3.2, EXINT0               SETB TR1TIMER1:JNB TF1,TIMER1       CLR TF1       CPL P1.0       SJMP TIMER1       END2、汇编终端      ORG 0000H          //汇编中断方式      LJMP MAIN      ORG 0003H      SETB TR1      RETI      ORG 001BH      CPL P1.0      RETI MAIN:MOV  SP,   #60H              MOV  TMOD, #20H         //选择工作方式      MOV  TL1,  #06H         //设置定时器1初值      MOV  TH1,  #06H      CLR  TR1                //中断初始化      SETB ET1      SETB EX0      SETB IT0      SETB EAHERE: AJMP HERE      END      ORG 0000H      //汇编中断方式      LJMP MAIN      ORG 0003H      LJMP EX0INT       ORG 001BH      LJMP T1INT MAIN:MOV  SP,   #60H              MOV  TMOD, #20H//选择工作方式      MOV  TL1,  #06H//设置定时器1初值      MOV  TH1,  #06H      CLR  TR1       //中断初始化      SETB ET1                SETB EX0      SETB IT0      SETB EAEX0IN:SETB TR1   //开启定时器      RETI       //中断返回T1INT:CPL P1.0   //P1.0取反      RETI      END3、C51查询#include <reg52.h>       //中断查询sbit P10 = P1^0;sbit P32 = P3^2;void main(){       SP=0x60;             TMOD = 0x20;         //选择工作模式2    TH1 = 0x06;          //设置T1定时器初值    TL1 = 0x06;              TR1 = 0;            //  初始化    ET1 = 1;            //定时器溢出允许控制位    IT0 = 1;             //中断触发控制方式    EX0 = 1;            //外部中断0允许控制位    EA = 1;              //开总中断    while(!IE0);        //循环查询    TR1 = 1;            //启动T1    while(1)            {        if(TF1)        {            P10 = !P10;    //当TF1=1时,P1.0求反            TF1 = 0;     //TF1定时器溢出中断请求标志位清零                      }       }}4、C51中断#include <reg52.h>           //C中断方式sbit P10 = P1^0;void main(){    SP=0x60;            TMOD = 0x20;         //选择工作模式2    TH1 = 0x06;          //设置T1定时器初值    TL1=0x06;    TR1 = 0;              // 初始化     ET1 = 1;              //定时器溢出允许控制位    EX0 = 1;             //外部中断0允许控制位    IT0 = 1;            //中断触发控制方式,下降沿触发    EA = 1;              //开总中断    while(1);           }void exint0() interrupt 0     //外部中断0{   TR1 = 1;             //开定时器}void timer1() interrupt 3    //定时器中断   {    P10 = !P10;         }
0 0
原创粉丝点击