① 下面是51单片机30秒倒计时程序,怎么把它改成24小时倒计时程序,别的不变,十分感谢
#include "reg51.h"
sbit start=P3^2; //外部中断0引脚 开始
sbit rst=P3^3; //外部中断1引脚 复位
sbit breakk=P3^4;
sbit led=P3^5;
sbit beep=P3^7;
sbit P30=P3^0;
sbit P31=P3^1;
unsigned char code anma[]=
{
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff
};
char time=24;//【原来的30s改为24小时】
char flag_t=0; // 1秒辅助计时
char now=0; // 0停止 1 计时 2报警 3复位
unsigned int temp=0;//【添加此行】// 【定义一个16位临时变量】
unsigned char g=0,s=3,i=0;
void delay(unsigned int n)
{
while(--n);
}
void t0_srv() interrupt 1 using 1
{
TH0=0X3C;
TL0=0XB0;
flag_t++;
if(flag_t>=20){ //20*50ms=1s
flag_t=0;
temp++; //【添加此行】
if(temp>=3600)//1小时=3600s //【添加此行】
{
temp=0;//【添加此行】
time--;
if(time<=0){
beep=0;
led=0;
TR0=0;
now=2;
time=0;
}
}
}
}
void button_start() interrupt 0 using 1 //外部中断0
{
delay(1500);
if(start==0) {
now=1;
TR0=1;
}
else return;
while(start==0);
delay(1500);
}
void button_rst() interrupt 2 using 1
{
delay(1500);
if(rst==0) {
TR0=0;
time=24;//【原为time=30;】
i=0;
led=1;
beep=1;
now=0;
}
else return;
while(rst==0);
delay(1500);
}
void disp()
{
g=time%10;
s=time/10;
g=anma[g];
s=anma[s];
P1=g;
P31=0;
delay(250);
P31=1;
P1=s;
P30=0;
delay(250);
P30=1;
//
}
void key()
{
if(breakk==0)delay(1500);
else return;
if(breakk==0) {
if(now==1){
i++;
if(i%2)TR0=0;
if(!(i%2))TR0=1;
}
}
else return;
while(breakk==0);
delay(1500);
}
main()
{
TMOD=0X01;//定时器0工作在方式1,
EA=1;
IT0=1;
ET0=1;
TH0=0X3C;//在12M 晶振下,定时时间为50ms
TL0=0XB0;
EX0=1;
EX1=1;
//TR0=1;
while(1){
disp();
key();
}
}
② 单片机,10000H-7DH怎么计算的求详细计算过程
1
2
3
51
单片机
C
语言程序(二)定时
/
计数器
中断
程序一
利用定时
/
计数器
T0
从
P1.0
输出周期为
1s
的方波,
让发光二极管以
1HZ
闪烁,
#include<reg52.h>
//52
单片机头文件
#include<intrins.h>//
包含有左右循环移位子函数的库
#defineuintunsignedint
//
宏定义
#defineucharunsignedchar
//
宏定义
sbitP1_0=P1^0;
uchartt;
voidmain()
//
主函数
{
TMOD=0x01;//
设置定时器
0
为工作方式
1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;//
开总中断
ET0=1;//
开定时器
0
中断
TR0=1;//
启动定时器
0
while(1);//
等待中断产生
}
单片机系统开发,2021最新报价!立即围观!
广告单片机系统开发意法半导体包含广泛产品线包含低成本8位单片机和具备丰富外设选择的单片机系统开发单片机。查看详情 >
voidtimer0()interrupt1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;
if(tt==20)
{
tt=0;
P1_0=~P1_0;
}
}
程序二
利用定时
/
计数器
T1
产生定时时钟
,
由
P1
口控制
8
个发光二极管
,
使
8
个指示灯依次一个一个闪动,
闪动频率为
10
次
/
秒
(8
个灯依次亮一遍为一个周期
)
,循环。
#include<reg52.h>
//52
单片机头文件
#include<intrins.h>//
包含有左右循环移位子函数的库
#defineuintunsignedint
//
宏定义
#defineucharunsignedchar
//
宏定义
华清远见c语言单片机,新手入门-实战教学,嵌入式开发
广告c语言单片机,华清远见自主研发,软硬件结合教学,毕业相当于拥有1-3年工作经验。查看详情 >
sbitP1_0=P1^0;
uchartt,a;
voidmain()
//
主函数
{
TMOD=0x01;//
设置定时器
0
为工作方式
1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;//
开总中断
ET0=1;//
开定时器
0
中断
TR0=1;//
启动定时器
0
a=0xfe;
while(1);//
等待中断产生
}
voidtimer0()interrupt1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;
if(tt==2)
{
tt=0;
网络安全OTA-专业,可靠的单片机ota,初创企业免费申领
广告2万台设备OTA额度面向初创企业【免费开放】,为企业降低OTA成本,提高设备安全系数。查看详情 >
P1=a;
a=_crol_(a,1);
}
}
程序三
同时用两个定时器控制蜂鸣器发声,
定时器
0
控制频率,定时器
1
控制同个
频率持续的时间,间隔
2s
依次输出
1
,
10
,
50,100
,
200,400,800,
1k
(
hz
)的方波
#include<reg52.h>
//52
单片机头文件
#include<intrins.h>//
包含有左右循环移位子函数的库
#defineuintunsignedint
//
宏定义
#defineucharunsignedchar
//
宏定义
sbitbeep=P2^3;
uchartt;
uintfre,flag;
voidmain()
//
主函数
{
fre=50000;
活字格-企业级低代码开发平台,软博会获奖产品
广告可视化设计,快速开发企业Web应用,帮助用户快速构建支持移动端的企业级应用程序,满足企查看详情 >
beep=0;
TMOD=0x11;//
设置定时器
0,
定时器
1
为工作方式
1
TH0=(65536-fre)/256;
TL0=(65536-fre)%256;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
EA=1;//
开总中断
ET0=1;//
开定时器
0
中断
ET1=1;
TR1=1;
TR0=1;//
启动定时器
0
while(1);//
等待中断产生
}
voidtimer0()interrupt1
//
定时器
0
中断
{
TR0=0;
//
进中断后先把定时器
0
中断关闭,防止内部程序过
多而造成中断丢失
TH0=(65536-fre)/256;
TL0=(65536-fre)%256;
tt++;
if(flag<40)
//
以下几个
if
分别用来选取不同的频率
等,希望以上内容能对你有所帮助、。
③ gd32单片机id好解吗
不太好解。
如果精通这方面应该容易,就是常说的会者不难难者不会。使用J-Link配合seggerj-link软件中的Unsecure命令就很容易进行解除读保护。打开JLink-commander,可以发现芯片,输入mem0x1ffff80010,从0x1ffff800地址读取10个字节,如果读出来的前两个字节全是FF的话说明芯片处于读保护状态。
单片机是典型的嵌入式微控制器,由运算器,控制器,存储器,输入输出设备等构成,相当于一个微型的计算机。与应用在个人电脑中的通用型微处理器相比,它更强调自供应(不用外接硬件)和节约成本。它的最大优点是体积小,可放在仪表内部,但存储量小,输入输出接口简单,功能较低。