首页编程单片机编程实例大全(c51单片机编程实例讲解)

单片机编程实例大全(c51单片机编程实例讲解)

编程之家2026-05-22818次浏览

大家好,今天小编来为大家解答单片机编程实例大全这个问题,c51单片机编程实例讲解很多人还不知道,现在让我们一起来看看吧!

单片机编程实例大全(c51单片机编程实例讲解)

51单片机编程求指导。。。

嘿嘿楼上的老兄给出的程序也不对呀看上去挺工整的,错误好几出啊,是得不到正确结果的。

其实算法很简单,只要熟悉一下单片机的加法指令和循环移位指令,自己就可以编写出来。

1算法:

就是使用指针连续对20H开始的连续4个单字节二进制数相加,结果存入31H单元,要考虑进位,(进位部分存入31H单元)

求平均值就是对和除4,可以使用循环右移指令每移一次相当于除2总共2次就行了。

2楼上的错误:使用指令 ADD A,31H求的和在累加器A里,并没有存入31H

单片机编程实例大全(c51单片机编程实例讲解)

使用指令 MOV A,31H;低位送A

RRC A;带进位循环右移完成一次除2

同样没有将结果回送给31H单元(保存)

呵呵满意就选满意回答(想要正确程序可以发消息给我)

单片机编程题

定时器在12MHz的时钟时,每个机器周期(1us)+1,工作模式1时(16位模式)最大计数值为65536,所以定时时间最大在65.536ms,达不到500ms的要求!你可以设置50ms定时中断一次,在中断程序中计数够10次,让灯循环一次即可。

1、计算计数初值X:

单片机编程实例大全(c51单片机编程实例讲解)

由于晶振为12 MHz,所以机器周期Tcy为50 ms。所以:

X=65536-50000=15536=3CB0H

即应将3CH送入TH1中,B0H送入TL1中

2、求T0的方式控制字TMOD:

M1M0=01,GATE=0,C/T=0,可取方式控制字为10H;

3、程序:

ORG 0000H

LJMP MAIN;跳转到主程序

ORG 001BH;T1的中断入口地址

LJMP DVT1;转向中断服务程序

ORG 0100H

MAIN:

MOV A,#00000001H;设定显示初值,共阴极接法

MOV R0,#00H;记录定时次数的寄存器

MOV TMOD,#10H;置T0工作于方式1

MOV TH1,#3CH;装入计数初值

MOV TL1,#0B0H

SETB ET1;T0开中断

SETB EA;CPU开中断

SETB TR1;启动T0

SJMP$;等待中断

DVT0:

INC R0;每中断一次(50ms)加1

CJNE R0,#10,EXIT;不够10次即未到500ms退出

MOV P1,A;亮灯

RL A; A的值左移,准备下一次灯的状态

MOV R0,#00H;清除计数值,重新计数

EXIT:

MOV TH0,#0D8H;重新装入计数值

MOV TL0,#0F0H

RETI;中断返回

end

求教几道单片机编程题

此题如下:设系统时钟频率谓12MHZ编程实现从p1.1输出周期1s的方波。

注:用T1计数实现。T1工作于计数方式时,计数脉冲通过T1(p3.5)输入。T0定时到对T1(p3.5)取反一次,则T1(p3.5)每20ms产生一个计数脉冲,那么定时500ms只需2次。设T1工作于方式2,T0工作于方式1,定时方式;则这时方式控制字为61H.定时计数器T0,T1都采用中断方式工作。

程序如下:

ORG

000H

LJMP

MAIN

ORG

000BH

MOV

TH0,#0D8H

MOV

TL0,#0F0H

CPL

P3.5

RETI

ORG

001BH

CPL

P1.1

RETI

ORG

0100H

MAIN:

MOV

TMOD,#61H

MOV

TH0,#0D8H

MOV

TL0,#0F0H

MOV

R2,#00H

MOV

TH1,#0E7H

MOV

TL1,#0E7H

SETB

EA

SETB

ETO

SETB

ET1

SETB

TR0

SETB

TR1

SJMP

$

END

有一点觉得很奇怪:它是通过对T1(p3.5)取反计数的,但是每取反两次不就又变回原来的值了吗,到头来哪儿起到计数作用了,还有就是R2到底起到什么作用了。本人初学,问题可能较简单,莫见笑

单片机编程实例大全和c51单片机编程实例讲解的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!

html+css+js仿写,网页设计html软件编程语言排行榜2024年 2020年一月编程语言排行榜