问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

希望有哪位单片机高手帮帮忙,详细讲解一下下面对程序

发布网友 发布时间:2022-04-22 05:56

我来回答

4个回答

热心网友 时间:2023-10-05 13:08

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追问压栈是什么

追答压栈就是将一个寄存器的值压入堆栈

热心网友 时间:2023-10-05 13:08

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

热心网友 时间:2023-10-05 13:09

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

热心网友 时间:2023-10-05 13:09

P3.5是个开关,P1是8个LED,P2.5应该是个蜂鸣器。
该程序是:按一下开关,8个LED的数值就递增1,同时蜂鸣器响一下。
各位单片机高手,哪位帮我分析一下下面这个程序,问题出...

回答:首先给你解释一下“<<”位移符的作用: 因为你的P1=0xfe,二进制数据就是11111110,左移一位之后为11111100,0往左移了一位,但是最低位系统自动以0补齐,而0x7f的二进制数据位01111111,所以if语句是永远进入不了的。 当然,针对此问题,C51给出了一个解决方案: 使用_crol_()函数可解决此问题...

求单片机高手帮我逐句解释一下这个程序 谢谢了

define uchar unsigned char//方便定义函数无符号型应该用UCHAR表示为方便直接用CHAR表示了。define uint unsigned int//整形同上解释 sbit clock=P1^0; //定义CLOCK接到单片机P0_1口,请注意这里用P0^1,就是因为包含了REG51.H。如果不包含就不能这么使用。sbit d_in=P1^1;sbit d_out=P1^2;sb...

请单片机高手分析下面程序~~出现*** WARNING L16: UNCALLED SEGMENT...

中断程序里的void debouncer() ;把void去掉就可以了这样改改试试,/*外部中断INT0的实验*/ include<reg52.h> define uint unsigned int define LED P1 sbit KEY = P3^2;void Delay(uint del) //延时时间为 10ms * del { uint i,j;for(i=0; i<del; i++)for(j=0; j<1827; j...

求单片机高手帮忙详细解释下程序 特别是中断那

这应该是一个闪烁灯的程序,定时器以方式2自动重装的方式工作,定时器到时产生一次中断就将记数字段减一,等到计数字段减到0就改变一次LED灯的状态,这基实就是一个延时的过程。总的来讲就是定时器每100us就产生一次中断,而每次中断就将计数字段减一,因此计数字段应该设为10000,这样就是产生10000次...

请各位高手回答一下下面的单片机程序问题!谢谢!

执行 DJNZ Rn, rel 指令耗用2个机器周期,即2μs 该段程序执行该类指令总次数=250x200x10=500000 耗用时间 = 500000x2μs = 10^6μs =1s 若改为延时0.1 第三行指令改为 LOOP1: MOV R1, #01 若改为延时0.5s, 第三行指令改为 LOOP1: MOV R3, #05 若改为延时2s, 第三行...

单片机入门,急求高手大虾指教!!!

您的水平不高我完全心中有底,其实我只要求这些学生能够掌握单片机应用开发的基本技能,用汇编和C51 写过一些基本的程序,真正动手做过一些简单的项目,然后将自己做过的项目写成比较规范的文档。我想,这种形式的“自我介绍”肯定要比让别人看您那写的千遍一律的“八股文”简历不知要强多少倍,古人言:“一叶知秋”其实...

请单片机高手帮写一个简单的中断程序

include <reg52.h> sbit LED=P0^0;void exint1Init(void){ EX1=1;IT1=1;EA=1;} void exint1_ISR(void) interrupt 2 { LED=~LED;} void main(void){ exint1Init();while(1);}

求一单片机高手帮我解读一下我的错误

这是一个对线路的模拟仿真的错误提示。U1(器件编号)的P3.2脚,也就是INT0(外部中断0)连接到U4器件的一个输出端口,提醒你注意。LCD1的V0、V1脚,即电源脚没有正确连接到电源。虚拟终端输入失败!

请单片机高手看一下程序哪里出错

if(shuaxin) //是否需要刷新LCD标志位. { Clr_Scr(); shuaxin=0; } led_menu_show(); }//附录四 按键程序 #define nullkey 0 //定义//uchar get_key() //读键//{ uchar pass,kcodebuf; static uchar lastkcode,keytime=0; //定义为静态变量,外部不可见,但需要常驻内存. static uchar have...

单片机高手给帮忙写个程序吧(急急)

现在急需一个单片机的程序;题目是基于spce061a的温度检测显示储存系统的程序,温度传感器使用的是DS18B20液晶显示是使用得1602,外扩了一个存储器1024,具体要求是:每1.采集温度,精... 现在急需一个单片机的程序;题目是基于spce061a的温度检测显示储存系统的程序,温度传感器使用的是DS18B20 液晶显示是使用得1602 ,外扩了一...

宝可帮帮忙在哪 基于单片机的 单片机是什么 sfr单片机 32单片机 8051单片机 52单片机 单片机setb 单片机tmod
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
白条额度负了有什么影响 "珍惜现在"用英文怎么说 做机压双眼皮五天了,昨天朋友过生日,喝酒了,今天早起眼睛有点红肿。会... 浙江省景区排名,浙江最好旅游景点排名 ...有什么好玩的地方:浙江最好玩的景点前十名,浙江省那里有旅游景点 别人打我,拉我的衣服,我怔了下他就摔倒了,有我的责任吗 被别人打了但是没有证据正当房卫下打人者脸上有一点点划痕怎么办?_百 ... 帮我用probably造一个句子,我或许会不高兴 索泰gt640 1G显卡能玩刺客信条4:黑旗吗? 求回答 好的加分 索泰GT640-1GD3 雷霆版 MA基本参数 水瓶座和天枰座是不是很配 易语言获取Discuz论坛回帖人回帖的内容 给我推荐点‘好’电影 极品飞车9问题 有哪些下载小说的网址? 原码、反码和补码有什么不同? 悄悄关注是微博会员对方能看到吗 微博悄悄关注一个人评论的时候会有铁粉标吗 新浪微博悄悄关注会不会被对方发现? 用什么方法可以确定微博上被陌生人悄悄关注? 新浪微博悄悄关注 会被对方知道么 大盘鸡怎么做好吃又简单 吃鸡大盘鸡多少发子弹 吃鸡游戏”里的扫车神器,比M249火力还强势,为什么... 大盘鸡和炒鸡区别在那里? 大盘鸡怎么做才好吃 如何做大盘鸡 大盘鸡怎么做 怀孕可以吃大盘鸡吗 美食天下菜谱大盘鸡怎么做 这个版本的《大悲咒》是谁唱的?收录于哪张专辑中? 网线和电话线共用制作 台州属于什么省 谁知道哪里可以下载这部电影啊??《我的失忆男友》啊 城市猎人片尾曲 水仙花怎么养,水仙花的花语,水仙花图片欣赏 关于RS-232接口线序 我的神, 这是人不是画!的背景音乐 U SJ-M的舞蹈教学 rs 232 线序 品色最近地址 2013年7月 红得发紫,为什么是红得~发紫呢? 财神背靠的墙上可以贴墙纸吗 在哪可以看到密级电影 今天玩牌财神在什么方向 阿瑞斯病毒财神爷兑换的步枪有子弹吗 2016年打麻将财神方位 今天推牌九坐哪个位置会赢 今天财神位在什么方向? 玩牌摆什么财神