实验四 MCS-51内部定时/计数器实验(2)

实验四 MCS-51内部定时/计数器实验(2)

一、实验目的

  1. 进一步掌握定时/计数器的4种工作方式的应用
  2. 掌握查询控制的定时/计数器的编程

二、知识要点

  1. 知识要点
    (1)8051内部有两个定时/计数器T0和T1,均可对系统内部的机器周期计数(定时模式)和芯片之外的脉冲信号计数(计数模式);都有4种工作方式,其不同之处在于计数值宽度不一样(13位/16位/8位)以及计数初值是否能自动重装。
    (2)与定时/计数器相关的控制字及控制位主要有TMOD,TH0/TH1,TL0/TL1,TCON

三、实验内容

(1)通过并行口P1实现十字路口交通灯的模拟控制。
关于交通路灯的亮灭规律说明:设有一个十字路口分为南北方向和东西方向,初始状态为红灯全亮,之后,南北绿灯亮,东西红灯亮,南北方向通车。延时一段时间后,南北绿灯熄灭,而南北黄灯开始闪烁,闪烁若干次以后,南北红灯亮,而同时东西的绿灯亮,东西方向通车,延时一段时间后,东西绿灯熄灭,而东西黄灯开始闪烁,闪烁若干次以后,再切换到南北方向,之后,重复上述过程。
编程提示:(实现6个灯按交通变化规律亮、灭或闪烁)
通过定时器实现精准定时,用较短的定时控制黄灯的闪烁(如0.5s或1s),较长的定时控制通行(如5s或10s)。

#include<reg51.h>
// 红 黄 绿 x x 红 黄 绿;这样的顺序;
int t;
int i;
void main(){
   
	TMOD=0x01;//方式0
	TH0=0x3c; //计数50000次 50ms 20次 相当于 1s
	TL0=0xB0;
	//全红灯时
	P1=0x63;//011x x011
	while(1){
   
		TR0=1;
		while(TF0){
   
			TF0=0;
			t++;
			TH0=0x3c;
			TL0=0xB0;
		}	
		if(t==40){
   
			TR0=0;
			t=0;
			break;
		}
	}
	//红绿灯开始执行
while(
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值