请高手帮我解读一下单片机程序段(1),搞了一天没搞明白,急!

作者&投稿:藩屈 (若有异议请与网页底部的电邮联系)
如何理解这段单片机程序. 各位大侠,请解释一下。我搞不明白,为什么会这样?~

++c的意思就是c先自加1然后再进行运算,你的程序中,刚开始程序是不执行if语句里面的这些语句的
但是c要先加一然后再判断是不是比300大,知道第三百次到了,c值就变成300了,if语句的条件就满足,这时候才执行{ LedNumVal++ ; //每隔300个扫描周期加一次
C =0; //每隔300个扫描清零
}
至于那个显示的问题,我不知道程序要显示什么,但是我写显示程序的时候是不这么复杂的,直接编写共阳或者共阴数码管的0到9的字符代码(即共阳数码管你要想让某段点亮就要给某段一个低电平,要想让共阴数码管的哪一段点亮就让这一段的电平为高电平,一共有八段(加上小数点))让IO口输出这八段所需要的高低电平就行了。看下面的图如果是共阳的数码管,显示1的话就是让B C两段亮,就让这两段输出为低电平,如果用P0口接数码管的话P0.0到P0.7分别接a、b、c、d、e、f、g、dp那么要想显示1就要让P0.1和P0.2是低电平,即让P0.0、P0.1、P0.2、P0.3、P0.4、P0.5、P0.6、P0.7输出为10011111就能控制数码管显示1,其余的类似。

ORG 0000H //代码起始地址
AJMP START //跳到程序的入口地址
ORG 0003H //程序的入口地址
AJMP INX0 //跳转到INX0
START: MOV SP,#60H //给SP寄存器赋值
CLR IT0 //清(IT0)标志位
SETB EX0//开外部中断0
ACALL ST0//调用子程序ST0
LOOP: ACALL ST1//调用ST1
ACALL ST2//调用ST2
ACALL ST3//调用ST3
ACALL ST4//调用ST4
AJMP LOOP //跳转到LOOP
/****************ST0子程序************************/
ST0: MOV P1,#0F0H//给ST0赋值
MOV R5,#20//给R5寄存器赋值
ACALL DELAY//调用延时子程序
RET//返回
/****************ST1子程序************************/
ST1: MOV P1,#0A5H
MOV R5,#100
ACALL DELAY
RET
/****************ST2子程序************************/
ST2: MOV R4#03H
NEXT2: MOV P1,#0A0H
MOV R5,#5
ACALL DELAY
MOV P1,#0F5H
MOV R5,#5
ACALL DELAY
DJNZ R4,NEXT2
RET
/****************ST3子程序************************/
ST3: MOV P1,#5AH
MOV R5,#150
ACALL DELAY
RET
/****************ST4子程序************************/
ST4: MOV R4#03H
NEXT4: MOV P1,#50H
MOV R5,#5
ACALL DELAY
MOV P1,#0FAH
MOV R5,#5
DJNZ R4,NEXT4
RET
/****************延时子程序************************/
DELAY: MOV R6,#00H
MOV R7,#60H
DJNZ R7,$//R7一直减为零,才往下执行
DJNZ R6,DEL1
DJNZ R5,DELAY
RET
INX0: PUSH P1
PUSH 5
PUSH 6
PUSH 7
MOV R5,#1
ACALL DELAY
JB P3.2,EXIT //判断是否触发外部中断
MOV P1,#0F0H
JNB P3.2,$//如果没有外部中断进来,则一直等待
EXIT: POP 7
POP 6
POP 5
POP P1
RETI
END

注释这么多,挺不容易的,应该能明白个大概吧。记得给个好评哦,谢谢了!如果还不懂的话,请找本汇编的单片机的书本看看。

flag 是一个结构体,它的每一个变量只占用1个位,这样可以节省空间,尤其是在嵌入式开发中。这种优化是很有必要的。

struct flag
{

unsigned time_1s:1;
unsigned key_scan:1;
unsigned task_time:1;
unsigned task_en:1;
unsigned run_flag:1;

}
flag1; //定义了一个结构体变量flag1。
void out_time(void)
{
if(flag1.time_1s==1)//如果结构体变量的成员变量time_1s为1则执行
{
flag1.time_1s=0; //就是清除一个标志

if(flag1.run_flag==1) //后面的都是变量标志的处理。
{
if(step_cont>=8)
{
step_cont=0;
}
if(step_cont==0)
{
run_cont[0]=0;
run_cont[1]++;
dsp_buf[4]=LED_TAP[step_cont];
dsp_buf[5]=LED_TAP2[step_cont];
dsp_buf[0]=(run_step_time[step_cont]-cont)/10;
dsp_buf[1]=(run_step_time[step_cont]-cont)%10; //这些操作是分离一个整数的个位和十位
dsp_buf[9]=(run_step_time[step_cont]-cont)/10; //具体要看其他程序
dsp_buf[8]=(run_step_time[step_cont]-cont)%10;
dsp_buf[2]=((set_cont-cont_set_b)-run_cont[1])/10;
dsp_buf[3]=((set_cont-cont_set_b)-run_cont[1])%10;
dsp_buf[6]=((set_cont-cont_set_b)-run_cont[1])/10;
dsp_buf[7]=((set_cont-cont_set_b)-run_cont[1])%10;

}
}

if(cont==run_step_time[step_cont])
{
step_cont++;
cont=0;;
}
cont++;
}


高手,请帮我翻译一段话
自打1923年获得诺贝尔文学奖以后,叶慈便盛誉不再。不过,终其一生他都坚持文学创作。如果他在40岁的时候休笔,那么他可能无法享有“不朽诗人”这一美誉,因为在他之前,文学史上还没有任何一位诗人75岁的一生中,其文学寿命就长达50年。1939年,叶慈与世长辞。W.H奥登在给这位文坛巨匠的悼诗中写道...

请高手帮我算算命运
2008-01-04 请高手帮我算算命运和事业 2010-02-17 请算命高手帮我算算命 谢谢 2008-05-22 请高手帮我算算命 2010-11-18 请高手 帮我算算命 1 2008-01-10 请高手帮我算算命,财运\\婚姻等等.旧历1986-12-16晚... 2 2006-08-27 高手帮我算算命运! 2009-10-26 请帮我算算命 1 2008-02-...

C高手进。帮我分析一道题。
不管是不是递归调用,分析函数调用的最佳方法是代替法。具体来说,就是用函数体代替函数的调用。首先必须去掉函数体里的多余脂肪。把 power( ) 里的 p 去掉:int power( int x, int n ) { if( n > 0 )return power( x, n - 1 ) * x;else return 1;} 如果 n 大于 0,power( x, ...

日语高手帮我翻译下
[译]请确认订单内容 本邮件为根据您的下单情况而发送的指引邮件。感谢您使用Apple Store,以下是您的订单内容,请您仔细确认。您所下的订单是根据Apple Store的销售规定而产生的。此外,请注意,本邮件并非告知您销售合同已经成立。在订单确认时,我们将会发送一份“感谢您下单”的通知邮件。感谢您的下单 ...

鬼谷子四字断运气请各位大师帮我解答一下鬼谷
说到请高手帮忙给鬼谷子算命,很多朋友都感兴趣。但是,很多人会问鬼谷子的算命解释。我想大家一定想知道鬼谷子说了什么。今天边肖就为大家分析解读鬼谷子的话,希望能解开大家内心的疑惑。再来看看鬼谷子的四字运!请各位大师帮我解答一下鬼谷子算命一、总论:此生。这是一个宏大的头,但航运限制没有通过。

希望一位高手来帮我解释一段古文
乐羊子在路上行走时,曾经捡到一块别人丢失的金饼,拿回家把金子给了妻子。妻子说:“我听说有志气的人不喝‘盗泉’的水,廉洁方正的人不接受他人傲慢侮辱地施舍的食物,何况是捡拾别人的失物、谋求私利来玷污自己的品德呢!”羊子听后十分惭愧,就把金子扔弃到野外,然后远远地出外拜师求学去了。一年...

求高手帮我解答一次函数
某化工厂1月到12月生产某种产品的统计资料如下:X\/月份123456789101112 Y\/产品吨数233456665457 (1)在直角坐标系中以月份数作为点的横坐标,以该月的产值作为点的纵坐标画邮对应的点。把12个点画在同一直角坐标系中。(2)按照月份由小到大的顺序,把每两个点用线段连接起来。(3)解读图象:从图...

英文高手请帮我翻译一下
这是游戏作弊的东西是吧,哈哈。) H - Infinite Health 无限生命 2) 8 - Infinite Body Armour 无限护甲 3) 9 - Infinite Stamina 无限精力 4) F3 - Infinite Ammo\/grenades etc.无限弹药\/手雷 等。5) F4 - Get Binoculars 得到双筒望远镜 6) F5 - Get Light 开灯 7) N - Lobotomize ...

求大师帮我预测一下
岁数: 1-6岁 7岁 17岁 27岁 37岁 47岁 57岁 67岁 77岁 87岁 交运: 1980 1987 1997 2007 2017 2027 2037 2047 2057 2067 流年: 庚申 丁卯 丁丑 丁亥 丁酉 丁未 丁巳 丁卯 丁丑 丁亥 辛酉 戊辰 戊寅 戊子 戊戌 戊申 ...

请高手们帮我翻译一下
问题回答:翻译如下 工作片断的可达到的准确性和质量在高速切口技术帮助下制造的受不同的种类干扰的影响。金属撤除率不仅限制由使用的动力化的纺锤的力量在一般的,而且由干扰发生。 热量和静态变形,可以在现代控制算法帮助下补偿,是没有问题,然而,这在动态干扰的情况下不是可能的。 象聊天振动的一个...

武强县19284582886: 帮个忙分析单片机程序段 -
沙才银杏: MOV R2, #68H ; R2=#68H MOV A, R2 ; A=#68H ANL A, #0FH ; A=#08H MOV 20H, A ; 20H=#08H *** MOV A, R2 ; A=#68H ANL A, #0F0H ; A=#60H SWAPA ; A=#06H ***

武强县19284582886: 帮忙解释一段单片机程序 -
沙才银杏: 这是一个令单片机P0.0脚输出信号不断翻转(高电平,低电平)的程序.高低电平持续时间由延迟子程序DEL决定,DEL子程序中的R5,R6,R7三个寄存器中的值控制着延迟时间,================================ MAIN: MOV P0,#0FEH ;...

武强县19284582886: 请高手帮忙解释一下这段单片机的C语言程序? -
沙才银杏: -1与0x07按位与,11111111(-1) & 00000111(7)=0000 0111(7),-1在计算机内是以补码表示的

武强县19284582886: 请帮解释一下单片机程序各步骤 -
沙才银杏: POP DPH ;从堆栈中弹出一个8位二进制数到DPH中, POP DPL ;从堆栈中弹出一个8位二进制数到DPL中 MOV DPTR,#4000H ;给DPTR赋值#4000h RL A ; 累加器A的内容左移一位 MOV B,A ; 把累加器 A的内容送到寄存器B中 MOVC A,...

武强县19284582886: 编程求助,帮忙解读一下这段程序(H8/3048F单片机) -
沙才银杏: P1DDR = 0xff; P2DDR = 0xff; P3DDR = 0xff; P4DDR = 0xff; P5DDR = 0xff; P6DDR = 0xf0; /* DIP switch on the CPU board */ P8DDR = 0xff; P9DDR = 0xf7; /* Communication port */ PADDR = 0xf7; /* Start bar detection sensor */ PBDR = 0xc0; ...

武强县19284582886: 单片机,C语言写的一小段程序,高手帮看看 -
沙才银杏: 这是一个简单的流水灯实验,前面的void delay(uint)是一个函数申明,你这一段里面没有给delay函数,给的程序不够清晰.如果是延迟100ms的话,delay函数应该是这样的:void delay(unsigned int x) { unsigned int i,j; for( i =0;i < x;i++ ) { for( j =0;j<3;j++ ); } } 给定delay(100)即延迟100ms.

武强县19284582886: 一段单片机汇编程序看不懂,哪位能帮忙分析下,谢谢! -
沙才银杏: 1,单片机复位时堆栈指针在内存(RAM)07H地址处,08H-1FH是寄存器区,而寄存器区是单片机使用较频繁的区域,为了避开这个区域,有时需要调整堆栈指针的位置,使之指向大于1FH的位置,8051单片机的内存只有128(80H)个字节,堆...

武强县19284582886: 高手帮忙解释一段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位...

武强县19284582886: 急求单片机高手解读程序,最好能讲下每部分程序能实现的功能
沙才银杏: SDA是串行数据线,SCL是时钟.这个程序应该是一个定式程序.先将总线置1,再将时钟置1,表明两者都可用,一段时间后,将总线清零,总线不可用,时钟可用.再过一段时间将时钟清零,一个时钟周期结束.这是当你的单片机高电平有效时的解释.如果你的单片机是低电平有效,则这段程序是一段延时程序,用来防止程序跑飞.

武强县19284582886: 单片机如下程序段,分析执行结果,先谢谢各位大神了
沙才银杏: 第1题: MOV A, #0D5H ;;A=D5H MOV 56H,#6EH ;;(56)=6EH MOV R0, #56H ;;R0=56H ANL A, R0 ;;A=D5H AND 56H=54H ORL A, @R0 ;;A=54H OR 6EH=7EH SWAP A. ;;A=E7H CPL A ;;A=18H 结果: A=18H,(56H)=6EH, R0=56H 第2题: ...

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