中断服务程序模板

通常定时器初始化过程如下:

①对 TMOD赋值,以确定TO和T1的工作方式。
②计算初值,并将初值写入THO、TLO或TH1、TL1。
③中断方式时,则对IE赋值,开放中断。
④使TRO或TR1置位,启动定时器/计数器定时或计数。

代码

利用定时器0工作方式1,在实验板上实现第一个发光管以1s亮灭闪烁。程序代码如下:

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit led1=P1^0;
uchar num;
void main()
{TMOD=0x01;//设置定时器0为工作方式1TH0=(65536-45872)/256;//装初值11.0592M晶振定时50ms 数为45872TL0=(65536-45872)%256;//EA=1;//打开总中断ET0=1;//打开定时器0TR0=1;//启动定时器0while(1);//程序停止在这里等待中断发生}
void T0_time() interrupt 1
{TH0=(65536-45872)/256;//重装初值TL0=(65536-45872)%256;num++;//num每加一次判断是否到20次if(num==20){num=0;led1=~led1;//让发光管状态取反}}

在这里插入图片描述
在实验板上完成如下功能:用定时器0的方式1实现第一个发光管以200ms间隔闪烁,用定时器1的方式1实现数码管前两位59s循环计时。程序代码如下:

#include <reg52.h>#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
//申明U1锁存器的锁存端
sbit wela=P2^7;
//申明U2锁存器的锁存端
sbit led1=P1^0;
uchar code table[]={0x3f,0x06,0x5b,0x4f,Ox66,0x6d,0x7d,0x07,0x7f,Ox6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delayms(uint);
void display(uchar,uchar);
uchar num,num1,num2,shi,ge;
void main()
{TMOD=0x11;//设置定时器0和1为工作方式1(0001 0001)THO=(65536-45872)/256;//装初值TLO=(65536-45872)%256;TH1=(65536-45872)/256;//装初值TL1=(65536-45872)%256;EA=1;//开总中断ETO=1;//开定时器0中断ET1=1;//开定时器1中断TRO=1;/启动定时器0TR1=1;//启动定时器1while(1)//程序在这里不停的对数码管动态扫描同时等待中断发生{display(shi,ge);}
}
void display(uchar shi,uchar ge)//显示子函数
{dula=1;PO=table[shi];//送段选数据dula=0;PO=Oxff;//送位选数据前关闭所有显示,防止打开位选锁存时wela=1;//原来段选数据通过位选锁存器造成混乱PO=Oxfe;//送位选数据wela=O;delayms(5);//延时dula=1;PO=table[ge];dula=O;PO=Oxff;wela=1;PO=Oxfd;wela=0;delayms(5);
}
void delayms(uint xms)
{uint i,j;for(i=xms;i>0;i--)for(j=110;j>0;j--);
}void TO_time() interrupt 1
{THO=(65536-45872)/256;TLO=(65536-45872)%256;num1++;if(num1==4){num1=O;led1=~led1;}
}void T1_time() interrupt 3
{TH1=(65536-45872)/256;TL1=(65536-45872)%256;num2++;if(num2==20){num2=O;num++;if(num==60)num=O;shi=num/10;ge=num%10;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/585543.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FMEA引领智能家居安全革新,打造无忧智能生活新纪元!

在智能家居日益普及的今天&#xff0c;如何确保家居安全成为消费者关注的焦点。本文将探讨如何通过FMEA&#xff08;故障模式与影响分析&#xff09;这一强大的质量管理工具&#xff0c;为智能家居赋能&#xff0c;打造安全无忧的智能生活新体验。 一、FMEA在智能家居领域的应用…

SSM学习——Spring JDBC

Spring JDBC 概念 Spring的JDBC模块负责数据库资源管理和错误处理&#xff0c;简化了开发人员对数据库的操作。 Spring JDBC通过配置数据源和JDBC模板来配置。 针对数据库操作&#xff0c;Spring框架提供了JdbcTemplate类&#xff0c;它是Spring框架数据抽象层的基础&#…

如何评估基于指令微调的视觉语言模型的各项能力-MMBench论文解读

1. 传统基准的固有局限 VQAv2:视觉问题回答数据集,主要用于评估视觉理解与推理能力。COCO Caption:图像描述生成数据集,用于评估模型对图像内容的理解与描述能力。GQA:结合常识的视觉问题回答数据集。OK-VQA:需要外部知识的视觉问题回答数据集。TextVQA:图像中包含文本的…

数学矩阵(详解)

矩阵乘法 知阵乘法是《线性代数》中的基础内容&#xff0c;但在考察数学的算法题中也会出现。 本节我们学习基础的矩阵乘法规则。 每个矩阵会有一个行数和一个列数&#xff0c;只有当相乘的两个矩阵的左矩阵的列数等于右矩阵的行数 时&#xff0c;才能相乘&#xff0c;否则不允…

打造高效电影推荐系统:Spring Boot与Vue协同过滤算法实践

末尾获取源码作者介绍&#xff1a;大家好&#xff0c;我是墨韵&#xff0c;本人4年开发经验&#xff0c;专注定制项目开发 更多项目&#xff1a;CSDN主页YAML墨韵 学如逆水行舟&#xff0c;不进则退。学习如赶路&#xff0c;不能慢一步。 目录 一、项目简介 二、开发技术与环…

AIGC-Stable Diffusion发展及原理总结

目录 一. AIGC介绍 1. 介绍 2. AIGC商业化方向 3. AIGC是技术集合 4. AIGC发展三要素 4.1 数据 4.2 算力 4.3 算法 4.3.1 多模态模型CLIP 4.3.2 图像生成模型 二. Stable Diffusion 稳定扩散模型 1. 介绍 1.1 文生图功能&#xff08;Txt2Img) 1.2 图生图功能&…

【攻防世界】file_include (PHP伪协议+过滤器)

打开题目环境&#xff1a; 进行PHP代码审计&#xff0c;发现这是一个文件包含漏洞。 我们尝试利用PHP伪协议中的 php://filter来读取 check.php 中的内容。 构造payload 并提交&#xff1a; 发现payload被过滤掉了&#xff0c;我们就需要尝试使用不同的转换器。 PHP各类转换…

紫光展锐P7885核心板详细参数介绍_5G安卓智能模块开发方案

紫光展锐P7885核心板采用了先进的6nm EUV制程工艺&#xff0c;集成了高性能的应用处理器和金融级安全解决方案&#xff0c;为用户带来了全新的性能体验。 P7885核心板搭载了先进的6nm制程工艺SoC P7885&#xff0c;其中包含四核A76和四核A55&#xff0c;主频可达2.7Ghz&#xf…

Flutter Web 的未来,Wasm Native 即将到来

早在去年 Google I/O 发布 Flutter 3.10 的时候就提到过&#xff0c; Flutter Web 的未来会是 Wasm Native &#xff0c;当时 Flutter 团队就表示&#xff0c;Flutter Web 的定位不是设计为通用 Web 的框架&#xff0c;类似的 Web 框架现在有很多&#xff0c;而 Flutter 的定位…

黑马HTMLCSS基础

黑马的笔记和资料都是提供好了的&#xff0c;这个文档非常适合回顾复习。我在黑马提供的笔记上做了一些微不足道的补充&#xff0c;以便自己复习查阅。该笔记比较重要的部分是 表单&#xff0c;http请求 第一章. HTML 与 CSS HTML 是什么&#xff1a;即 HyperText Markup lan…

计算机网络——数据链路层(流量传输与可靠传输机制)

计算机网络——数据链路层&#xff08;流量传输与可靠传输机制&#xff09; 流量传输与可靠传输机制流量控制可靠传输机制 停止-等待协议无差错情况接收并检测到差错状态确认丢失或迟到状态 停等协议的效率分析后退N帧协议&#xff08;Go-Back-N&#xff0c;简称GBN&#xff09…

stable diffusion如何下载预处理器?

如何下载预处理器&#xff1f; 具体位置:SD文件>extensions>sd-webui-controlnet>annotator” 把整个文件夹复制到SD的文件夹里面 里面有一个“downloads”文件夹 把这些模型复制到“downloads”文件夹里