单片机高手来帮我解释这个程序

作者&投稿:正盛 (若有异议请与网页底部的电邮联系)
单片机这里帮我解释下08H是什么意思~

08H是位地址,是一位,R0是寄存器,,是八位,CLR,JNB是位操作指令,怎么去操作八位,$是当前程序指针,这里是指08H为零继续执行JNB 08H,$

不是的。如果她不喜欢你她就不会跟你聊到半夜三更,她喜欢你可能是她还没有意识到呢,好好努力吧!

ORG 30H
HA1S: MOV A,#00H ;累加器A清0
HA1S1: JB P3.5,HA1S1 ;等待按键
MOV R2,#10H ;R2=10H
LCALL DELAY ;延时
JB P3.5,HA1S1 ;按键有效继续,无效转HA1S1
HA1S2: JB P3.5,HA1S2 ;等待按键
MOV R2,#10H ;R2=10H
LCALL DELAY ;延时
JNB P3.5,HA1S2 ;按键有效转HA1S2,否则继续
INC A ;A加1
PUSH ACC ;A压栈
CPL A ;A取反
MOV P1,A ;A送P1
CLR P2.5 ;P2.5置低
SETB P2.5 ;P2.5置高
POP ACC ;A出栈
AJMP HA1S1 ;转HA1S1
DELAY:PUSH 02H ;R2压栈
DELAY1:PUSH 02H ;R2压栈
DELAY2:PUSH 02H ;R2压栈
DELAY3:DJNZ R2,DELAY3 ;R2减1直到0为止
POP 02H ;R2出栈
DJNZ R2,DELAY2 ;R2减1直到0为止
POP 02H ;R2出栈
DJNZ R2,DELAY1 ;R2减1直到0为止
POP 02H ;R2出栈
DJNZ R2,DELAY ;R2减1直到0为止
RET
END

ORG 30H //首地址
HA1S: MOV A,#00H //寄存器A清零,程序开头,主循环入口
HA1S1: JB P3.5,HA1S1 //循环等待P3.5为0

MOV R2,#10H //设置延时时间
LCALL DELAY //调用延时子程序
JB P3.5,HA1S1 //如果P3.5是1,回到HA1S1,重复前面的过程

HA1S2: JB P3.5,HA1S2 //循环等待P3.5为0
MOV R2,#10H //设置延时时间
LCALL DELAY //调用延时子程序
JNB P3.5,HA1S2 //如果P3.5是0,回到HA1S2,重复前面的过程
INC A //A增1 PUSH ACC //ACC进栈
CPL A //A补码(取反)
MOV P1,A //A输出P1
CLR P2.5 //清P2.5
SETB P2.5 //设置P2.5
POP ACC //ACC出栈
AJMP HA1S1 //跳转到HA1S1,循环
DELAY:PUSH 02H //延时子程序入口 ,循环入口
DELAY1:PUSH 02H //延时循环1入口
DELAY2:PUSH 02H //延时循环2入口
DELAY3:DJNZ R2,DELAY3 //延时循环3
POP 02H //出栈
DJNZ R2,DELAY2 //延时循环2结尾
POP 02H //出栈
DJNZ R2,DELAY1 //延时循环1结尾
POP 02H //出栈
DJNZ R2,DELAY //延时最外循环结尾
RET //延时子程序结束返回
END

ORG 30H ;定义代码段存放首地址

HA1S: MOV A,#00H ; A=0;
HA1S1: JB P3.5,HA1S1 ;判断P3.5这个IO口是不是为0(估计接的是按键吧,就是看它有没有按下)
MOV R2,#10H ;R2=10;延时附初值
LCALL DELAY ;调用延时函数
JB P3.5,HA1S1 ;再判断一次按键状态(消抖作用)
HA1S2: JB P3.5,HA1S2 ;还是判断按键状态
MOV R2,#10H ;同上
LCALL DELAY ;同上
JNB P3.5,HA1S2 ;判断按键是否放开
INC A ;A++; 现在因该是1了
PUSH ACC ;A 入栈(想知道为什么一会ACC,一会A.自己去看他们的差别吧)
CPL A ;A 按位取反 (这么做的原因,估计是你LED灯是拉低点亮的)
MOV P1,A ;把A 给P1口
CLR P2.5 ;拉低 P2.5这个IO口 (如果灯是拉低点亮的 ,那就是点亮LED灯)
SETB P2.5 ;拉高 P2.5 (没延时,估计你看不出这个效果,基本就是一直灭)
POP ACC ;刚才压入的是 1 现在重新取出 A 变回1
AJMP HA1S1 ;跳回去 完成一个循环

DELAY:PUSH 02H ;这里开始都是延时函数
DELAY1:PUSH 02H
DELAY2:PUSH 02H
DELAY3:DJNZ R2,DELAY3
POP 02H
DJNZ R2,DELAY2
POP 02H
DJNZ R2,DELAY1
POP 02H
DJNZ R2,DELAY
RET
END

P3.5是个开关,P1是8个LED,P2.5应该是个蜂鸣器。
该程序是:按一下开关,8个LED的数值就递增1,同时蜂鸣器响一下。


请用过自动胶片机的摄影高手解答
1、一般相机有中途倒片按钮(F55D我不太清楚,应该有这个按钮),记住已经拍了多少张,然后将胶卷倒回暗盒,比如你拍了10张,下次拍时装上这个胶卷,挂上片头(如果片对已拉进暗盒,需要用引片器引出片头),合上相机后盖,按你所说放入胶卷的时候它会把胶卷全卷到另一边,你盖上镜头盖,将曝光模式...

光圈与像素相机高手来解释
简单来说,我们把相机镜头前由多片金属叶片互叠组成的可变孔径的光栅叫做光圈。二、像素:像素是计算机屏幕上所能显示的最小单位。用来表示图像的单位。屏幕上像素的数目为分辨率,为了控制像素的亮

我想请教一下摄影高手,能解释一下什么叫广角镜头?以及其原理?越详细越 ...
即焦距越短,拍摄时所需拍摄距离越近,相反,当使用长焦距摄影镜头拍摄时,如获得相同的影像放大率,需要的拍摄距离就越远,故此,长焦距摄影镜头又称作远摄镜头(TELEPHOTO).如果135照相机拍摄身高为1.60米的人物的横幅照片,并使其全身刚好充满所摄画面的高度,用50mm的镜头拍摄时,物距为3.4米;而用焦距值为100mm的镜头拍...

请摄影高手帮我解答我的佳能60d 拍出来的照片发灰怎么回事?里面有我...
照片发灰主要是摄影角度的问题,阳光透过镜片形成的光漫散射,容易造成发灰发白的现象,要利用遮光罩,或避免大逆光的拍摄环境。色彩的调整,是一个很复杂的概念,牵扯到感光件材质(CCD 和COMS),大小、数据算法、镜头和空气质量等多方面因素,一般所说的的鲜艳的色彩,是需要一定量的色彩饱和度,如胶...

拍的片 感觉跑焦 请单反高手帮忙解答一下~
拍摄人像发虚原因有很多,比如快门速度低于安全快门、持握相机姿势不正确导致手抖、聚焦不准确等。安全快门速度就是指快门速度不要低于镜头焦距的倒数,比如你使用50mm的焦距,快门速度就应该在1\/50秒以上,你使用200mm的,快门就在1\/200秒以上。正确的姿势是右手握机柄,左手心向上托在镜头和机身处,...

...用三星的卡片机拍一个拉杆箱 拍出的相片总是会出现木纹 求高手...
这个和相机没什么关系,是箱子本身的材质造成的,还有你的图片应该是缩小后的,原片大小应该没有这种纹理。

半幅胶片相机18x24的高手给介绍下
推荐Yashica于1988年推出了半幅AF照相机SAMURAI X3.0。SAMURAI 在日语中是“战士”的意思。虽然半幅照相机不是Yashica所发明,但奇特的造型却是SAMURAI X3.0独有的,整个相机为一个形似砖头的四方块,但各控制按钮则是经过精心设计和布置的,握持舒适。阿嘎特18k是全机械全手动操作,采用28\/2.8镀膜...

单反相机成像变模糊是怎么回事?高手帮我
2:模糊:快门太慢,你的手抖动了。或者拍摄物是运动的,。3:很多像素点:这纯粹就是ISO的问题了,一般是ISO的数值越低,相片的噪点就越少。现在一般的相机ISO在400以下都看不出来,你可能吧ISO调到1600甚至更高了。还有,相机有个“高ISO自动降噪”功能,建议开启!看你提的问题,基本断定你没有...

来个搞摄影的高手,帮我解决这些专业问题吧~~
c、倒易率失效。如果曝光时间过长(超过l/10秒)或过短(少于1/1000秒),普通胶片的曝光曲线就要发生畸变.如果仍按曝光计给定的曝光组合拍摄,就会产生曝光不足,若使用的是彩色片,还会产生色彩饱和度和色温偏差问题。d、光线特别弱的条件下拍摄动体。有时拍摄现场光线特别弱,人工光照明又不充分,被...

数码相机高手来看下
看样子,楼主所提的相机是一种小型消费级数码相机!不过,我还没见过siragon的相机,只听说有它的手提电脑!至于7.5-21.5mm,楼上的应该当成单反机来解释了!这个是相机所配镜头的焦段变化.即2.87倍光学变焦!由有此类焦段(焦段过广)的相机,所以可以断定这就是一台小型消费级数码相机!目前的数码...

获嘉县17044334841: 单片机高手来帮我解释这个程序 -
禄别心肝: ORG 30H HA1S: MOV A,#00H ;累加器A清0 HA1S1: JB P3.5,HA1S1 ;等待按键 MOV R2,#10H ;R2=10H LCALL DELAY ;延时 JB P3.5,HA1S1 ;按键有效继续,无效转HA1S1 HA1S2: JB P3.5,HA1S2 ;等待按键 MOV R2,#10H ;R2=10H ...

获嘉县17044334841: 求单片机高手帮我逐句解释一下这个程序谢谢了
禄别心肝: 解决方法很多!#include//字头,表示如果涉及到的函数从这两个后缀名.H的文件里调用. #include #defineucharunsignedchar//方便定义函数无符号型应该用UCHAR表示为方便直接用CHAR表示了. #defineuintunsignedint//整形同上解释 ...

获嘉县17044334841: 求单片机大神用通俗的话解释一下这个查表程序! -
禄别心肝: 查表程序中有两个指令,一般使用其中之一.1、MOVC A,@A+DPTR,一般使用这个指令,DPTR是地址表的首地址,偏移量就是表中目的数的偏移量,使用起来比较方便2、MOVC A,@A+PC,使用的比较少一些,PC是当前行地址,偏移量是当前行与表首地址之间的空间大小再加表中目的数的偏移量,所以需要计算,用起来不太方便.

获嘉县17044334841: 大佬们可以解释一下这个单片机程序吗 -
禄别心肝: ORG 0000H ;单片机复位后入口地址 MOV TMOD,#00010000B ;定时器1工作与模式1 SETB EA ;开启中断 SETB ET1 ;开启定时1中断 MOV A,#01111111B ;最高位为0其余为1 MOV P1,A ;点亮最高位LED SETB TR1 ;启动定时器1 HERE:LJMP HERE ;原地循环 ORG 001BH ;定时器1入口地址 DJNZ R0,GO R0减1不为0转GO MOV R0,#10H R0减到0后赋值10H RR A ;AA右循环 MOV P1,A ;依次循环点亮其余灯 GO:RETI ;中断返回 END ;程序结束

获嘉县17044334841: 哪位大神帮我解释一下这个 单片机的 ....程序 -
禄别心肝: #include //引用自定义的stc单片机头文件#define uint unsigned int //宏定义:uint代替unsigned int,方便定义变量#define uchar unsigned char //同上 uchar code table1[]={0xf7,0xfb,0xfd,0xfe}; //应该是数码管4位位选代码,每次选一个(共阳极的...

获嘉县17044334841: 哪位大神帮我解释一下这个单片机的.......
禄别心肝: 你这种情况比较复杂!#include//引用自定义的stc单片机头文件#defineuintunsignedint//宏定义:uint代替unsignedint,方便定义变量#defineucharunsignedchar//同上ucharcodetable1[]={0xf7,0xfb,0xfd,0xfe};&#...

获嘉县17044334841: 求单片机C语言高手以下是计算步进电机速度的程序,帮忙详细的解释一下越详细越好. -
禄别心肝: RunSpeed应该是延时时间,用来控制速度的,RunSpeed值越大,步进电机速度越低. SPEED[0]=(1000*6/RunSpeed/100)+48; SPEED[1]=1000*6/RunSpeed%100/10+48; SPEED[2]=1000*6/RunSpeed%10+48; 以上三个式子是求速度的百位,十位和个位,后面+48即加30H=48用来转换成ASCII码的.说的对,哥们就采纳下吧~~

获嘉县17044334841: 51单片机用汇编把16进制转化为10进制,这个程序不是很懂,希望高手能详细解释下 -
禄别心肝: 这个程序是正确的.程序循环了16次.把 M_byte,L_byte,左移了16次,最高位,依次移进了Cy;用 ADDC 指令,把 RW1,RW2,左移了16次,并把Cy,加入到了最低位.ADDC 指令后面,是十进制调整指令,所以,RW1,RW2 中的内容就是BCD码.

获嘉县17044334841: 高手帮忙解释一段c语言程序啊,我在学单片机,这段示例程序可以让数码管和led灯亮,详细解释啊 -
禄别心肝: 解释如下#include "reg52.h" //调用52内码 void delay(void); //声明延迟 void main() //主函数 { unsigned char i; //定义i为无符号字符型,即8位长度 while(1) // 一直循环下面{}内的内容 { for(i=0;i<8;i++) //8次 { P0 = ~(1<<i); //将1向左边移动i位...

获嘉县17044334841: 大家帮忙解释一下这个程序 单片机语言 -
禄别心肝: #include #define uint unsigned int #define uchar unsigned char uchar a,flag; void main() { TMOD=0x20;// 定时器1工作方式为2 TH1=0xf3; //设置定时器初值 TL1=0xf3; TR1=1; //开启定时器1 SM0=0; //串口工作方式1,8位异步串行通信 SM1=1; ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网