导航:首页 > 操作系统 > 51单片机fc

51单片机fc

发布时间:2022-06-10 09:12:36

① 51单片机定时器的使用

51单片机定时器的GATE=1时,用外部INT0启动定时器,当INT0=0时,
定时器T1会停止计数,这个时候读取T1的值是可以计算出高电平的宽度的。

② 51单片机如何实现精确的定时数据采集

在定时器溢出中断得到响应时,停止定时器计数,读出计数值(反映了中断响应的延迟时间),根据此计数值算出到下一次中断时,需多长时间,由此来重装载和启动定时器。例如定时周期为1ms,则通常定时器重装载值为-1000(0FC18H)。下面的程序在计算每个定时周期的精确重装载值时,考虑了由停止计数(CLR TR1)到重新启动计数(SETB TR1)之间的7个机器周期时间。程序中#LOW(-1000+7)和#HIGH(-1000+7)是汇编符号,分别表示-1000+7=0FC1FH这个立即数的低位字节(1FH)和高位字节(0FCH)。
CLR EA ;禁止所有中断
CLR TR1 ;停止定时器T1
MOV A,#LOW(-1000+7) ;期望数的低位字节
ADD A,TL1 ;进行修正
MOV TL1,A ;重装载低位字节
MOV A,#HIGH(-1000+7) ;对高位字节处理
ADDC A,TH1
MOV TH1,A
SETB TR1 ;重启动定时器
SETB EA ;重开中断
此方法适用于各种原因造成的定时误差的情况,为通用方法。
资料来源于互联网。

③ 一、怎样 采用51单片机(AT89C51芯片)内部定时器实现8秒计时,每 隔8秒蜂鸣器报警

#include "reg51.h"

void initTimer(void)
{
TMOD=0x1;
TH0=0xfc;
TL0=0x18;
}
uint i=0;
void timer0(void) interrupt 1
{
TH0=0xfc;
TL0=0x18;
//add your code here.
i++;
if(i>8000) //蜂鸣器响
}

void main(void)
{
initTimer();
TR0=1;
ET0=1;
//EA=1;
}

④ MSC-51单片机的计数器设置一个初值后,如FC18H,是在此基础上进行加计数还是减计数

设置值后只要使能计数位TR0就会立即进行加计数,当计满后变为0时就会产生中断例如设置为8位计数器时,计数到0xff时还不会产生中断只有在加一变为oxoo时才会溢出产生中断

⑤ 51单片机蓝牙模块程序,哪里错了,好像我把0xfc换为0x00就可以。

中断函数应该对接受、发送标志都清零,
if(TI) TI=0;else{ temp=SBUF; RI=0; SBUF=0x00;
}
还有应该在中断里面接收数据,在主循环里面发送数据

⑥ 一块51单片机如何输出4个程序,执行4个不同功能

1、首先要明白pwm的含义,pwm就是输出不同占空比的脉冲,
2、普通51单片机io口输出pwm的话,可以用定时器去计时,比如要输出100hz的占空比50%的pwm。可以配置1ms的定时器中断,在中断中计数,一个中断就是1ms,100hz的脉冲,周期是10ms,50%的占空比,可以计数到5的时候把io口取反;程序如下
void
main()
{
tmod
=
0x01;
th0
=
0xfc;
tl0
=
0x18;
//
晶振选择12mhz,配置定时器中断1ms
et0
=
1;
tr0
=1;
ea=
1;
while(1);
//程序停止在这里,,接下来就是去响应中断
}
void
timer0()
interrupt
1
{
static
unsigned
char
t
=
0;
th0
=
0xfc;
tl0
=
0x18;
//重新装入初值;
t++;
if(t
<5)
{
io
=
0;
}
else
if(t
<
10)
{
io
=
1;
}
else
{
t
=
0;
}
}
上面的程序就是周期是10ms,占空比为50%的输出了,,,需要调节占空比的话,只要改变io口电平电话的时间就可以了;
3、多个io口
输出不同占空比的pwm;
原理是和1个的是一样的,
多用几个时间变量去计时,判断就可以了。
4、上面说的是普通的51单片机,现在有很多增强型单片机,内部有pwm模块,可以直接使用,赋值一个周期值,比如30000到特定的寄存器里面;
然后改变第一次电平变化的时间和第二次电平变化的时间
就可以实现不同的占空比调节了。具体的可以参考下单片机的数据手册都会有例程说明的,。如果是使用内部pwm模块的话,需要选择含有多路pwm功能的单片机来满足设计要求了。

⑦ 简述51单片机堆栈进栈和出栈操作规则

1.堆栈用于响应中断或调用子程序时保护断点地址,也可通过栈操作指令(push
和pop保护和恢复现场)其中入栈时先SP+1再将内容压入当前SP所指示的堆栈单元
中,出栈则先将SP所指示的内部ram单元中内容送入直接地址寻址的单元中,再将
SP减1.
2.中断允许寄存器的功能是控制CPU对中断的开放和屏蔽以及每个中断源是否允许
中断结构包括EA(CPU中断总允许位),ES(串行口中断允许位)ET1(定时器1中
断允许位)EX1(外部中断1中断允许位)ET0(定时器0中断允许位)EX0(外部中
断0中断允许位)
3.T机=12/fosc=12/(6*E6)=2us
X=2*E13-T/T机=8192-200/2=8092=1F9CH=1111
1100
1110
0B
因为TL1的高3位未用,
修正后X=1111
1100
0001
1100B=FC1CH
4.LJMP为长转移指令,可转向64KB程序存储器的任一单元;SJMP为相对转移指令
,偏移范围-128~+127共259字节;AJMP为绝对转移指令,转移目的在指令后一个
存储单位所在2K区间内。
5.按键抖动:在触点抖动期间检测按键的通与断状态,可能导致判断出错,即按
键一次按下或释放被错误认为是多次操作。
6.汽车的温控系统,测控系统,防盗报警等多项系统中应用单片机。汽车电子中
涉及A/D和D/A转换的模块基本都会有单片机的存在。以下以汽车倒车雷达为例,
雷达控制部分由89C51单片机构成,前端数据采集由超声波测距,系统由发射和接
收装置来获取数据,根据所测得的距离来判断是否调用声音报警程序,距离小于
预置点时,调用报警模块。

⑧ 51单片机定时器FC18H H什么意思

表示的是16进制,B表示二进制,D表示十进制,等同c语言的0xFC18

⑨ 51单片机可以做8位FC游戏机吗

非常勉强,网上好像有驱动彩屏的俄罗斯方块,开发fc这样的游戏起码也要用stm32或者树莓派吧,不过51做个打地鼠机还是不错的

⑩ 12MHZ51单片机定时1ms,应该是TH0=0xfc的,这段程序仿真的效果是TH0=0xfd,程序该如何改正啊急急急急

1 mS 应该用
TH0=(65536-1000)/256; // 定时时间 1mS
TL0=(65536-1000)%256;

(65536-1000) 与 -1000 不是一个概念
(65536-1000) = 64536 十六进制 为 0xFC18
-1000 为 负 1000 编译后的 十六进制 会变成 0xFB18

阅读全文

与51单片机fc相关的资料

热点内容
解压视频白头小哥 浏览:748
cadq命令 浏览:954
python连接本地数据库报错 浏览:194
手机模拟加密禁卡操作 浏览:105
电荷数怎么算法 浏览:589
cad如何打开命令行 浏览:150
php图片限制大小 浏览:164
程序员一夜未归 浏览:592
苹果xsmaxapp怎么不显示更新 浏览:600
苹果app怎么清除角标 浏览:483
解压屁屁玩具脏了怎么办 浏览:670
算法识别自动折叠 浏览:9
dos命令遍历文件 浏览:456
翻译整个pdf 浏览:198
怎么给解压软件授权 浏览:621
怎么换手机桌面壁纸安卓 浏览:957
pdf转换阅读器 浏览:344
特斯拉怎么app预约充电 浏览:498
安卓怎么录像更清晰 浏览:919
怎么服务器输入命令没有显示出来 浏览:799