单片机编程问题(高手请进!!!!!)

以下内容均以DVCC防真机为平台和DBUG软件
第1题.走马灯程序:
(1)8个发光二极管,首先点亮一个,依次左移,然后右移,如此重复4次;
(2)点亮两个,依次左移,然后右移,如此重复4次;
(3)点亮三个,依次左移,然后右移,如此重复4次;
(4)如此每次增加一个,直到8个全部点亮;
(5)两种编程方式(直接送数据,直接循环)

第2题.显示2个数字程序并倒数
要求:(1)显示内RAM单元20H中的内容;
(2)(20H)少于99,然后倒数;
(3)拆字程序,查表程序;

第3题.显示6位数字程序

第4题.数据排序,并显示最小的数据
要求:在RAM的以20H为首地址中有一无符号数据块,其长度为20H的内容,请将他们从大到小的顺序排列,并显示出其中最小的数据在显示器上,并使该数闪烁相应长度的次数

以上4题均要求在30个命令以内!

单片机为80C51

请各位大虾帮帮忙!小第不胜感激!要是回答的好了我还加分!!!!!!!

第1题.走马灯程序:
(1)8个发光二极管,首先点亮一个,依次左移,然后右移,如此重复4次;
(2)点亮两个,依次左移,然后右移,如此重复4次;
(3)点亮三个,依次左移,然后右移,如此重复4次;
(4)如此每次增加一个,直到8个全部点亮;
(5)两种编程方式(直接送数据,直接循环)

START:
LCALL TIME
MOV P1,#0FCH ;D1,D2亮
LCALL TIME
MOV P1,#0F3H ;D3,D4
LCALL TIME
MOV P1,#0CFH ;D5,D6
LCALL TIME
MOV P1,#03FH ;D7,D8
LCALL TIME
MOV P1,#0F0H ;D1,D2,D3,D4
LCALL TIME
MOV P1,#00FH ;D5,D6,D7,D8
LCALL TIME
MOV P1,#0FFH ;全灭
LCALL TIME
MOV P1,#000H ;全亮
LCALL TIME
AJMP START ;跳到开头重新开始
TIME:MOV R0,#250 ;5秒延时程序,这里假设晶振为12MHZ,50*200*250次就是5秒
loop1:MOV R1,#250
loop2: MOV R2,#200
DJNZ R2,$
DJNZ R1,loop2
DJNZ R0,loop1
RET
温馨提示:内容为网友见解,仅供参考
无其他回答

用51单片机写了一个流水灯程序,有一点问题,请高手解惑
单片机的流水灯程序,因为程序就这么写的,决定了流水灯左移7次,再右移7次,结束两个循环后,才能执行下面的while(!key),按键才有效,而在循环过程中,不执行while(!key),所以按键无效。下图画红框内的两个循环。要想按键随时有效,应该把两个移位函数_cror_,_crol_ 放在主程中,检测key也放在...

单片机高手请进!!!stc89c52单片机 能控制几个舵机?用什么样的程序控制...
20ms为舵机周期,一个周期可以同时控制8个舵机,20\/2.5=8.用定时器产生脉冲,两个定时器T0,T1,8*2,同时可以控制16个舵机,以下是用按键控制一个舵机的转动,你可以参考以下程序,多设个io口,在switch函数中的 条件语句中加各个io口脉宽,以下程序中的例如:case 0中的if可以多加几个io控制就...

单片机编程知识九大问答知识
对于目前普遍使用的RISC架构的8bit MCU来说,其内部ROM、RAM、STACK等资源都有限,如果使用C语言编写,一条C语言指令编译后,会变成很多条机器码,很容易出现ROM空间不够、堆栈溢出等问题,而且一些单片机厂家也不一定能提供C编译器。而汇编语言,一条指令就对应一个机器码,每一步执行什幺动作都很清楚...

单片机 智能调节白炽灯亮暗 高手请进,30分之内给好答案加50!
电路中要有过零检测电路。这个电路检测到过零后触发中断。中断中调用延时,延时完毕后输出一个触发电平。并且这个延时是可以调节的。这样就会使晶闸管的导通角发生变化,然后输出电压就发生变化。灯的明暗就发生变化。最后退出中断的时侯关闭输出就可以了。用外部中断调节,中断0是加,中断1是减。功率开关用...

单片机电平转换的问题,高手请进
输出一定要接一个上拉电阻,这是因为比较器的输出是集电极开路的。从输入与输出波形可以看到,结果是满意的。如果调整电位器,可以看到输出的脉冲信号的宽度就变了。如果用施密特触发器,你无法控制你要比较的3V电压,而是施密特触发器本身输入的相关参数决定的电平!

求助!单片机c语言编程高手请进(全分加给)
那些叫关键字,是C语言本身的一部分,是固定的,二三十个,和一些伪指令,用多了就觉得不外乎就是几个字母的组合,根英文无关,并且单是靠关键字是掌握不了C的,好好学学C语言吧!C语言简单并非常有用.

单片机大侠请进!如何拼16*16点阵?
先两两拼好,标上标号。再拼起来。我这里是用逐列扫描。16X16点阵是先显示1~8列(左半部上下2 个8X8LED)再显示9~16列(右半部上下2个8X8LED),这样,左上下的列接COL 0~7,右上下列接COL 8~15,即左(右)半上下列的8 个引脚并联。而左(右)半的行引脚分别接ROW 0~15,即左右行引脚...

高分悬赏急求哪位单片机C语言编程高手帮我翻译这个程序,由于要提问到...
define uint unsigned int \/\/ 宏定义“短表示”,方便书写 define uchar unsigned char \/\/ 同上 void lcd_mwc(uchar i) \/\/ 这个函数是用来写命令的:如启动液晶 \/\/ 锁定液晶等,可以查看液晶控制字就知道 \/\/ 0xb8和0x40是什么命令了,估计是启动 \/***\/ \/\/ 属于函数void lcd_clear(...

判断单片机是否加密--单片机高手请进
1.明显是被加密,因为汇编指令是几乎不可能这么从小到大的顺序排列的。有的单片机加密的结果就是读出的代码全是0。2.你从被加密的单片机中读出的代码已经不是原始代码了,因为加密相当于随机的打乱顺序再从新排列,只有恢复最原始的排列,其代码才有意义,所以你把加密后的代码写入另外一个单片机,肯定...

我是大四学生刚接触单片机这门课程,很感兴趣,期待以后从事这方面的研...
可以说,掌握用C语言单片机编程很重要,可以大大提高开发的效率。不过初学者可以不了解单片机的汇编语言,但一定要了解单片机具体性能和特点,不然在单片机领域是比较致命的。如果不考虑单片机硬件资源,在KEIL中用C胡乱编程,结果只能是出了问题无法解决!可以肯定的说,最好的C语言单片机工程师都是从汇编走出来的编程者因为...

相似回答