① 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