① c51单片机的定时器计数器怎么用最好用例子
方法有很多的,给你一个,你可以调试一下,你可以通过不同的晶振去计算定时器初值,如果你懂定时器这部分很好调通的
#include <reg52.h>
sbit p1_0=P1^0;
int i; //全局变量
void timing(void) //晶振为3.6864M
{
TMOD|=0x01; //定时器T0,工作方式1
TH0=0xC3;
TL0=0xC7; //这两个寄存器存的是计数器的计数开始的值,这两个值累加至溢出后正好是50ms
ET0=1; //使T0中断可以溢出
EA=1; //开启总中断
TF0=0; //溢出位清零
TR0=1; //开启T0
}
/********定时中断函数*********/
void time0_int () interrupt 1 //定时中断函数
{
TH0=0xC3;
TL0=0xC7;
i++;
}
main()
{
i=0;
timing();
while(;)
{
if(i==20)
{
p1_0=~p1_0; //p1.0口状态翻转
i=0;
}
}
② 51单片机0计数方式时的初值
方式0是13位计数器或定时器,分低5位和高8位,因此计算方法为:
低位=(8192-X)%32
高位=(8192-x)/32;
就是这么算出来的。
③ 51单片机一段引脚赋值
只需要对P2.1-P2.6赋值写法如下:
x=赋的值;
x&=0x7e;
P2|=x;
④ 51单片机c语言编程能给位赋值么
C语言中不能直接给二进制某一位赋值
但是可以通过按位操作来实现
如果你的P3是整型或者字符型的变量,可以通过“按位或”对某一位赋1,通过“按位与”对某一位赋0
P3=P3|0x40;//这样就是在不改变其他位的同时给第6位赋1
0x40转换成二进制位01000000
假如:P3的值为10110010
10110010
| 01000000
结果为 11110010
⑤ 51单片机变量初值。
如果是“C51”,并且使用默认的startup.a51启动文件(未手动修改)的话,那么在运行到main()之前、片内SRAM已经都初始化为0了。
⑥ 单片机定时100个脉冲初始赋值是多少,计算过程
51单片机的定时器是加法计数的,因此100个脉冲定时器初值是
满量程减100
当工作在8位计数器时,初值是256-100
工作在16位模式是65536-100
工作在13位模式时是8192-100
但16位模式下初值又分高8位和低8位。高8位是(65536-100)/256
低8位 (65536-100)%256
13位模式下 高8位是(8192-100)/256
低8位是(8192-100)%256
8位计数器时,高 8位 低8 位初值都是256-100