请各位各位江湖人士帮忙,求有关单片机的程序
发布网友
发布时间:2022-04-30 04:03
我来回答
共4个回答
热心网友
时间:2023-10-11 03:55
ORG 00H
AJMP MAIN
ORG 0BH
AJMP T0_SEVER
ORG 30H
MAIN:;主程序
MOV P1,#00H
CLR P3.0
CLR P3.1
CLR 00H;初始化显示,关显示
MOV R0,#99;装初值
MOV R1,#00H;显示低位
MOV R2,#00H;显示高位
MOV DPTR,#TABLE;LED显示段位码首地址
MOV TMOD,#01H;T0定时方式1
MOV IE,#82H;开T0中断
MOV TL0,#LOW(65536-5000)
MOV TH0,#HIGH(65536-5000);装定时初值,定时5ms
SETB TR0;启动定时器
LOOP:
MOV A,R0
MOV B,#10
DIV AB
MOV R1,B;显示低位暂存
MOV R2,A;显示高位暂存
ACALL DELAY1S;调用1s延时子程序
DJNZ R0,LOOP;判断倒计时是否完毕
AJMP MAIN;循环执行
DELAY1S:;延时1s子程序
MOV R7,#20
DEL1:
MOV R6,#100
DEL2:
MOV R5,#248
DJNZ R5,$
DJNZ R6,DEL2
DJNZ R7,DEL1
RET
T0_SEVER:;中断服务子程序
JB 00H,LOOP1;判断显示标志位
SETB P3.0
CLR P3.1
MOV A,R1
MOVC A,@A+DPTR
MOV P1,A;显示低位
SETB 00H;置显示标志位
AJMP RETURN
LOOP1:
CLR P3.0
SETB P3.1
MOV A,R2
MOVC A,@A+DPTR
MOV P1,A;显示高位
CLR 00H;清显示标志位
RETURN:
MOV TL0,#LOW(65536-5000)
MOV TH0,#HIGH(65536-5000);重装定时器初值
RETI
TABLE:;LED显示段码表
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
C51代码的程序实时性不好,时间不准,望指出问题。
/*程序名:99~0倒计时程序*/
/*程序功能:用P1口和P3.0、P3.1口实现动态显示,完成99~0的倒计时功能*/
/*作者:严峥晖*/
#include<at89x51.h>
typedef unsigned char uchar;
uchar code led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
bit bdata flag="0";
uchar data high_dis,low_dis;
void delay(void)//延时子函数
{
uchar i,j,k;
for(i=0;i<=20;i++)
for(j=0;j<=100;j++)
for(k=0;k<=248;k++);
}
void init(void)//初始化函数
{
P1=0x00;
P3_0=0;
P3_1=0;
IE="0x82";
TMOD="0x01";
TL0=(65536-5000)%256;
TH0=(65536-5000)/256;
TR0=1;
}
void calc(uchar time)//计算显示高低位
{
high_dis=time/10;
low_dis=time%10;
}
void sever_t0(void) interrupt 1//中断服务子程序
{
if(flag==0)
{
P3_0=1;
P3_1=0;
P1=led[low_dis];
flag=~flag;
}
else
{
P3_0=0;
P3_1=1;
P1=led[high_dis];
flag=~flag;
}
TL0=(65536-5000)%256;
TH0=(65536-5000)/256;
}
int main(void)//主函数
{
uchar i="99";
init();
do
{
calc(i);
delay();
i--;
}
while(i>=0);
}
热心网友
时间:2023-10-11 03:55
源起: http://zhidao.baidu.com/question/163455823.html
适合用户:KeilC已初步入门,想进一步提高的朋友
程序架构:全部使用状态机构建而成(状态机是高手进阶必经之路)
模块构成:键盘,显示,定时器,CPU核心四大块
程序特点:
1. 修改方便,所有头文件由Includes.h统一组织,增加头文件只需在Includes.h中加入;
2. 由Keil自带串口方便的在全速运行时监视数据
3. 本系统相当于一个精简的合作式操作系统,你随便用,绝无版权纠纷;
使用方法:
1. 打开项目文件,编译通过并启动调试器
2. peripherial 菜单下打开P2口(P2.0 -P2.2是键盘,定义详见Key.c)
3. view菜单下打开Serial Window #1 ,将显示模式设定为16进制(putchar()输出字符)
4. Run全速运行,点击键盘P2.0,P2.1,P2.2观察效果(注意按键按下后必须弹起,否则不响应下一次按键)
下载地址:http://www.pudn.com/downloads268/sourcecode/embed/detail1227714.html
参考资料:http://www.pudn.com/downloads268/sourcecode/embed/detail1227714.html
热心网友
时间:2023-10-11 03:56
不就是倒计时吗、俺可以写出来,况且给你做出仿真来,坚决不是忽悠你。
想就联系我
热心网友
时间:2023-10-11 03:57
so EASY