产品概述

单片机 进制转换 学单片机这么久,还不会计算定时器初值就out了。

小编 2024-10-06 产品概述 23 0

学单片机这么久,还不会计算定时器初值就out了。

在学习单片机的时候,我们发现很多功能都是通过中断来实现的。之前也举过烧水的例子来阐述中断,今天就讲解一下定时器赋初值的方法。8位的定时器最大可计数2的8次方为256,16位的定时器最大可计数2的16次方为65536。由于单片机的定时器是递加式的,所以最大值减去所要定时的值就是初值,举例如下:

最大值为100,我们只需要38,怎么办呢,由于是递加的,我们只需要在62时开始计时就可以了。

以proteus仿真为例简单讲解定时器赋初值

用proteus搭建的电路图如下,晶振为12M,P2.0每10ms翻转一次,即P2.0输出的频率为100HZ。

这里使用16位的定时器,那单片机定时器0的最大计数就是65536.晶振为12M,那单片机的一个机器周期就是1us,定时器 0工作在方式1时最大定时65.536ms。

定时器的定时时间T = (65536-X),单位是us;

定时器初值X = 65536-T;

假设定时时间T=10ms=10000us,

那定时器初值X=65536-10000=55536us,也就是定时器0从55536开始递加到65536就是10ms,所以55536就是定时器的初值,55536转化为十六进制为0Xd8f0,所以定时器的初值为:

TH0 = 0XD8;

THL = 0XF0;

用虚拟示波器抓到的波形如下:

只需要支付硬件成本的STM32单片机学习板正在集资众筹,价格129元,。这款学习板包含了GPIO应用、RS232通讯、RS485通讯、CAN总线通讯、USB通讯、IIC总线、SPI总线、JTAG在线调试、SW在线调试、ISP自动下载、RTC实时时钟、TFT真彩屏应用等丰富的外设资源,详情请加微信号了解。

本订阅号致力于单片机、ARM等嵌入式软硬件的设计经验分享,秉承“人人都是电子设计经验的分享者”的理念,成功路上不孤单,我们一起努力。

公众号:micropoint8。嵌入式学习网振兴网:www.picmcu.com

单片机C语言开发离不开它--秒懂二进制和十六进制

单片机C语言开发离不开它--秒懂二进制和十六进制

作为单片机爱好者,入门学习单片机编程一定要学会进制的基本概念,常见的有(二进制、八进制、十进制、十六进制),今天于晓超带大家入门一下单片机C语言编程的二进制和十六进制(技术文章阅读量惨淡,希望大家能够点赞收藏加转发,感谢)。

进制顾名思义,进位计数制是人们定义的进位技术方法,这句话可能比较难理解,以十进制为例,逢十进一,(1、2、3....10--1、2、3....10)由此大家应该也可以理解二进制和十六进制了,二进制就是逢二进一,十六进制逢十六进一,记住这是进位运算的方法。

二进制的应用

二进制在单片机开发过程中必不可少,可以把他理解为高低电平

如图,在单片机时序图中常常这样表示。0和1代表着信息,那么很多的0和1组成的就是一串信息,0和1的不同排列所承载的信息也不同,但是在实际应用过程中二进制承载的信息过多时不易使用和记忆,因此在单片机C语言开发中常常将一串二进制用十六进制来替代。

十六进制的应用

十六进制满十六进一,那么大于10的用什么来表示尼?在十六进制中大于10的数用ABCD等,英文大写来代替,0X01、0XAA这都是16进制,对十六进制和二进制进行相互转换是单片机C语言开发中必备的技能。

进制转换

二进制和十六进制的转换,在开发过程中可以借助计算机自带的计算器进行转换,但是自己熟练掌握相互转换会在开发过程中,节约很多时间而且有利于自身的理解,如何进行相互转换如图所示!

相关问答

单片机 中如何将十六 进制转换 成十进制(看说明)?

你自己处理的数据还要在意它是什么进制的吗?按我的理解,系数不是用来转换电压值的进制的,而是用来进行电平值比较的吧。比如8位AD5v采样,读寄存器后值是...

51 单片机 16 进制 改成十 进制 原理?

将51单片机的16进制数转换为十进制数的原理是根据权重进行计算。每个16进制位的权重从右到左依次为16^0、16^1、16^2、16^3,以此类推。首先,将16进制数的每个...

51 单片机 16 进制 转ascii码方法?

这程序的功能就是把一字节十六进制数的低4位转换为一个ASCII码。例如0x0E转换为'E'、0x08转换为'8'。我估计你就是对内码不太熟悉吧。你翻一下ASCII码...

51 单片机 怎么生成16 进制 文件?

如果是ASCII码表内的符号值,那么ASCII值本身就可以认为是16进制的(因为进制只是给人看的,单片机只有2进制,没有ASCII和Hex之分),但如果是Hex值,经过AS...

51 单片机 多少 进制 ?

默认是十进制的。如果hour=03。03是十进制3。十进制十六进制其实是对人来说的,是你写程序的时候区分的,如果我用串口发送十进制数30hour=sbuf单片机中ho...

51 单片机 的指令是多少 进制 ?

51单片机的指令是二进制。书写正常用16进制。51单片机的指令是二进制。书写正常用16进制。

我想利用 单片机 通过串口发送几个16 进制 数FF 10 11 01 DD求高手指点,不胜感激?

单片机通过串口发送几个16进制数FF101101DD,程序如下:voidSend(unsignedcharTx_Data)//向串口发字符{SBUF=Tx_Data;while(...

单片机 十六 进制 0x09是什么意思?

在单片机中,十六进制0x09代表一个十六进制数,它等于十进制数9。在单片机的编程中,可以使用十六进制数来表示常量和指令等,其中以0x开头的十六进制数表示一个...

mcs51 单片机 的cpu8位是几 进制 ?

8位指的是内部运算器(累加器)一次可以处理的二进制数的位数,对于8位单片机,8位二进制数的加减乘除等运算都可以用一条指令来完成,其内部的寄存器也多是8位的8...

单片机 怎么生成hex格式?

单片机常常使用汇编语言编写程序,完成对硬件的控制和数据处理等功能。将汇编程序转换为单片机可以执行的目标代码并最终生成HEX格式的过程为烧录。HEX格式是一...

猜你喜欢