单片机实验六

实验6.1 采用定时器与计数器相结合的方法使P1.7所接的发光二极管亮1秒、灭1秒,周而复始。

中断方式 汇编代码:

ORG 0000H 
LJMP START 
ORG 000BH
JMP TIMER0
ORG 001BH
JMP TIMER1
ORG 0040H 
START: 
MOV TMOD,#61H
MOV TH0,#03CH
MOV TL0,#0B0H
MOV TH1,#0F6H
MOV TL1,#0F6H
SETB P1.0
SETB P1.1
SETB EA
SETB ET0
SETB ET1
SETB TR0
SETB TR1
SJMP $

TIMER0:
CPL P1.0
MOV TH0,#03CH
MOV TL0,#0B0H
RETI

TIMER1:
CPL P1.7
RETI
END

查询方式 汇编代码: 查询方式下,TF0,TF1标志位一定要手动清零

ORG 0000H 
SJMP START 
ORG 0040H 
START: 
MOV TMOD,#61H
MOV TH0,#03CH
MOV TL0,#0B0H
MOV TH1,#0F6H
MOV TL1,#0F6H
SETB P1.0
SETB P1.1
SETB TR0
SETB TR1
F:
JNB TF0,$
CLR TF0
CPL P1.0
MOV TH0,#03CH
MOV TL0,#0B0H
JNB TF1,F
CLR TF1
CPL P1.7
SJMP F

END

中断方式 C语言:

#include<reg51.h>

timer0()interrupt 1{
    TH0=0x3c;
    TL0=0xb0;
    P10=~P10;
}
timer1()interrupt 3{
    P17=~P17;
}

main(){
    TMOD=0x61;
    TH0=0x3c;
    TL0=0xb0;
    TH1=0xf6;
    TL1=0xf6;
    P10=0;
    P11=1;
    EA=1;
    ET0=1;
    ET1=1;
    TR0=1;
    TR1=1;
    while(1){
    }
}

查询方式 C语言:

#include<reg51.h>

main(){
    TMOD=0x61;
    TH0=0x3c;
    TL0=0xb0;
    TH1=0xf6;
    TL1=0xf6;
    P10=0;
    P11=1;
    TR0=1;
    TR1=1;
    while(1){
        while(!TF0){
        }
        TF0=0;
        TH0=0x3c;
        TL0=0xb0;
        P10=~P10;
        if(!TF1){
            continue;
        }
        TF1=0;
        P17=~P17;
    }
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值