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

已知单片机晶振频率为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

附上仿真图:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值