导航:首页 > 操作系统 > 单片机加1法

单片机加1法

发布时间:2022-07-09 21:56:27

1. 单片机C语言如何实现按键按一下的时候加一,长按的时候连加。

这个可以通过定时器来实现,比如当按键时间小于2秒时,按一次加1,当超过2秒时,没50毫秒加1实现连加功能。例程如下:
#include<reg51.h>
unsigned int a;
unsigned char times;
sbit key=P1^0;
void t0isr() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
times++;
if(times>40)
{

a++;
printf("%d",a);

}

}

main()
{
TMOD=0x21;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=0xfd;
TL1=0xfd;
TR0=1;
TR1=1;
ET0=1;
EA=1;
times=0;
a=0;
while(1)
{
if(key==0)

{

a++;

printf("%d",a);

while(key==0);

times=0;

}

}

}

2. 如何使单片机寄存器中存放的地址数据加1(假设该地址数据未知)

嘿嘿 可以使用单片机的加1指令
存放地址的寄存器 是指针 可以存地址的寄存器有 DPTR 、 R0、 R1、
可以使用加1指令 使他们中存放的地址数据加1
INC DPTR
INC R0
INC R1

要使指针所指的内容加1 可以使用

INC @ R0
INC @R1

呵呵 满意 就选满意回答

3. 单片机 2位数间隔1s自动加1 的程序怎么写呀、

2位数间隔1s自动加1 的程序的实现方法:

1 利用定时器1,定时50毫秒,每当50毫秒定时时间到时,使用软件计数器计数,当计数到20时,即1秒时间到。(这时软件计数器要清零,重新开始为下一秒计数)

2 每当1秒时间到时,应该让你的自动加1计数器加1。

3 楼上的朋友配合的真好,这么快就已经给出了具体的程序 其中 time为软件计数器;x为自动加1计数器。你可以作为参考,修改后嵌入到自己的程序中。

4. 单片机按键按一次就加一

按键相对是个低速任务。你按的再快,一秒可以按十次吗?什么?你可以。。那你就是作弊了。因为哪怕你反应的过来。按键可不行。所以。这个本质你需要牢牢抓住。那么你可以选择一秒之内只检测几次按键。把几乎是连续在使用的机器时间碎片化。比如在一个碎片里只查一次按键。是的,你现在就是这么做的。只是循环太快。碎片太多。按键的抖动你都查到了。所以你需要的仅仅是慢下来。极限就是刚刚说的查10次。算算,这是一个100ms的定时。明白定时器的真正用途了吗?如果你实际这么实验了你会发现这的确有效。不会加个成百上千了。接下来你需要设置一个逻辑让按键检测只对下降沿起作用。最好的办法就是和前次的状态比较。如果上次的状态为高而此次状态为低。那么这就是个下降沿。于是你需要一个寄存器保存上一次的状态。并每次比较后更新。原来这寄存器是这么用的。。实际实验后发现这么干已经可以保证基本每次长按只会加1。但是短按似乎会丢失。那是因为。100ms实在是长了些。电平保持100ms有时是太难了。所以,你可以适当提高频率。比如提高10倍。以10ms为周期。基本能解决大多数问题。

5. c51单片机按键加1,保持

1.设置一个状态变量,如flag,定义flag=0为开状态,flag=1为关状态。
2.因为是按键(不是开关),所以实际上单片机读取的应该是脉冲形式的输入。设按键接单片机p01引脚,故可采用以下程序实现按键扫描
if(p01==0)//按下按键,进入下降沿
{
delay2();//20ms延时去按键前抖动
while(p01==0);//等待上升沿到
来,即按键弹起
flag=~flag;//flag取反,实现状态切换
}
void
delay2()//20ms延时子程序
{
unsigned
char
i,k;
for(i=0;i<100;i++)
for(k=0;k<100;k++);
}
注:根据按键的具体接法,若按下按键向单片机输入低电平,则采用以上程序;若按下按键向单片机输入高电平,则将两处p01==0均改为p01==1。

6. 如何使单片机寄存器中存放的地址数据加1(假设该地址数据未知)

嘿嘿
可以使用单片机的加1指令
存放地址的寄存器
是指针
可以存地址的寄存器有
DPTR

R0、
R1、
可以使用加1指令
使他们中存放的地址数据加1
INC
DPTR
INC
R0
INC
R1
要使指针所指的内容加1
可以使用
INC
@
R0
INC
@R1
呵呵
满意
就选满意回答

7. 单片机中,inc指令是在执行前加1还是执行后加1

具体执行方法如下
首先需要在编程区域输入指令的执行条件,在左母线右侧输入:LD X2,当X2接通时运行加1指令。

然后输入加1指令:INCP D0。其含义为当执行此指令时,D0的数据自动加1,INC与INCP的区别在于:INC是程序运行每个周期都加1,而INCP是脉冲指令型指令,只在第一个扫描周期执行加1.

编写好程序先对程序进行转换,然后点击模拟测试按钮将程序写入模拟PLC。

点击测试窗口的“菜单启动”然后选择“继电器内存监视”。

从监视窗口选择位软元件X和字软元件D。

通过模拟仿真可以看到:当X2每次接通时,目标操作数都会进行加1运算。

注意事项:
若不采用脉冲型,当X2接通时,D0会一直进行加1运算。
参考资料来源:吴鉴鹰吧
贡献文档:网络文库《吴鉴鹰单片机项目实战精讲》
参考实例:吴鉴鹰单片机开发板

8. 单片机按一下加一,加到20的程序

假设P0 P1口各接一个数码管,p2.0接按键,程序如下:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit key=P2^0;
uchar num=0;
//共阴数码管七段码
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77};
void Delay1ms(uint i) //1ms延时程序
{
uint j;
for(;i>0;i--)
{
for(j=0;j<164;j++)
{;}
}
}
void main(void )//主程序
{
while(1)
{
if(key==0)//判断按键是否按下
{
Delay1ms(10);//延时消抖
if(key==0)
{
while(key==0);;//等待按键抬起
num++;
if(num==20)num=0;
}
}
P0=table[num%10];
P1=table[num/10];
}
}

阅读全文

与单片机加1法相关的资料

热点内容
小宅z3下载什么app 浏览:816
快速打印pdf 浏览:636
安卓手机怎么设置禁止卸载 浏览:87
钢琴小车编程图解 浏览:884
编译选项DFORTIFY 浏览:326
快易典安卓怎么升级系统 浏览:494
服务器d盘上的pdf地址怎么写 浏览:121
windows游戏编程之从零开始下载 浏览:234
我的世界刀光服务器的地址 浏览:385
小米扫地机器人算法 浏览:979
漫画人体pdf 浏览:681
微信安卓都有什么版本 浏览:108
客户手里有程序怎么加密 浏览:673
遍历字符串python循环 浏览:862
磁盘加密之后可以重装系统吗 浏览:487
html输出php变量 浏览:217
黄金金箔折解压球 浏览:425
java正则表达式源码 浏览:473
win执行python脚本 浏览:309
怎么知道服务器型号 浏览:986