欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

外部中断与定时器中断实验

程序员文章站 2022-06-09 08:54:44
...

已知单片机晶振频率为12MHZ,自行选取定时/计数器,定时/计数器工作方式自选,编写程序,使P1.7端输出周期为0.5ms方波。

解题思路:
假设方波信号的占空比为50%,已知条件可以得,机器周期为1us,所以决定采用T0定时,工作方式0,已知输出周期为0.5ms,则每定时0.25ms计数使P1.7输出求反。计算的次数为0.25/1us=250次。
则计数初值:X=8192-250=7942=1F06=1111100000110,(13位,低八位有三位不用)即TH0=F8,TL0=06。

C语言:

#include <reg52.h>
sbit P11=P1^7;
void exint() interrupt 0
{
    TR0=1;
}

void time0int() interrupt 1
{
    TL0=0X06;
    TH0=0XF8;
    P11=!P11;
}

void main()
{
    SP=0X60;
    TMOD=0X00;
    TL0=0X06;
    TH0=0XF8;
    TR0=1;
    ET0=1;
    EA=1;
    while(1)
    {
        ;
    }
}

汇编语言:

ORG 0000H
LJMP    MAIN
ORG 0000H
LJMP    INTOP
ORG 000BH
LJMP    T0P
ORG 0030H
MAIN:   MOV SP,#60H
        MOV TMOD,#00H
        MOV TH1,#0F8H
        MOV TL1,#006H
        SETB ET0
        SETB TR0
        SETB EA
HERE: SJMP  HERE
INTOP: SETB TR1
T0P:    MOV TL0,#006H
        MOV TH0,#0F8H 
        CPL P1.7                
        END

附上仿真图:
外部中断与定时器中断实验

相关标签: c语言 单片机