80c51单片机很简单的一个编程
发布网友
发布时间:2022-04-30 10:23
我来回答
共3个回答
热心网友
时间:2022-06-21 03:04
;以下程序,经过仿真调试,复合要求.
;------------------------------
ORG 0000h
MOV A, #0DFH ;1101 1111
SETB C
R_SHIFT:
MOV P1, A
CALL DL1S
RRC A
JC R_SHIFT
L_SHIFT:
RLC A
MOV P1, A
CALL DL1S
JB ACC.5, L_SHIFT
RRC A
SJMP R_SHIFT
;------------------------------
DELAY1S: ;延时子程序.
; ....... ;细节略.
RET
END
热心网友
时间:2022-06-21 03:04
ORG 0000H
SJMP START
;
ORG 0030H
START:
MOV A,#01H
MAIN:
RL A
MOV P1,A
LCALL DELAY_1S
RL A
MOV P1,A
LCALL DELAY_1S
RL A
MOV P1,A
LCALL DELAY_1S
RL A
MOV P1,A
LCALL DELAY_1S
RL A
MOV P1,A
LCALL DELAY_1S
RR A
MOV P1,A
LCALL DELAY_1S
RR A
MOV P1,A
LCALL DELAY_1S
RR A
MOV P1,A
LCALL DELAY_1S
RR A
MOV P1,A
LCALL DELAY_1S
RR A
MOV P1,A
LCALL DELAY_1S
SJMP MAIN
org 0100h
;-------------
DELAY_1S: ;高精度延时0.5s (无中断)
DEY1 DATA 1FH
DEY2 DATA 1EH
DEY3 DATA 1DH
MOV DEY1,#50 ;0.05S
DL1:
MOV DEY2,#100 ;10mS
DL2:
MOV DEY3,#221 ;100uS 11.0592M(5T)
DJNZ DEY3,$
DJNZ DEY2,DL2
DJNZ DEY1,DL1
RET
;-------------
END
注:移位可压缩成循环语句
热心网友
时间:2022-06-21 03:05
#include"reg51.h"
void delay_ms(unsigned int a)
{
unsigned char;
while(--a)
for(i=0;i<125;i++);
}
int main()
{
unsigned char i,j;
p1=0x01;
while(1)
{
for(j=0;j<5;j++)
for(i=0;i<8;i++)
{
P1&=~(0x01<<i);
delay_ms(1000);
}
for(j=0;j<5;j++)
for(i=0;i<8;i++)
{
P1=0x80>>i;
delay_ms(1000);
}
}
}
用汇编语言编写80c51单片机程序,求内部RAM中50H~59H十个单元内容的平均...
MUL AB ;A=溢出部分的平均值,肯定小于0FF MOV 5AH,A ;第一部分的平均值p1给5AH MOV A,#6H MOV B,5BH MUL AB ;值给5BH,最大值是3CH,所以不用考虑溢出。ADD A,5CH ;MOV B,#10 DIV AB ;6B+s1的平均值p2 ADD A,5AH MOV 5AH,A ;p1+p2 MOV 5BH,B SJMP END ...
80c51的数时钟单片机程序
LED_data=0xb0|LED_4[2];delay_5ms(3); //第三位显示 LED_data=0x70|LED_4[3];delay_5ms(3); //第四位显示} } /***1302写入一个字节***/ void write_1302byte(uchar dat){ uchar i;RST_1302=1;//_nop_(); 启动数据传送 for(i=0;i<8;i++){ IO_1302=dat&0x...
80c51编程,用mcs-51指令实现
控制转移指令用于控制程序的流向,所控制的范围即为程序存储器区间,MCS-51系列单片机的控制转移指令相对丰富,有可对64kB程序空间地址单元进行访问的长调用、长转移指令,也有可对2kB字节进行访问的绝对调用和绝对转移指令,还有在一页范围内短相对转移及其它无条件转移指令,这些指令的执行一般都不会对标志位有影响。 [1]...
单片机80C51的指令系统
MOV A,50H //把内部RAM 50H单元中的数据传给累加器A ,A=40H MOV R0,A //把A内容送给寄存器R0 ,R0=40H MOV A,#00H //把立即数0送给A ,A=#00H MOV @R0,A //A送内部RAM单元,40H=0 MOV A,#3BH //3BH送给A, A=#3BH MOV 41H,A // (41...
在80c51单片机应用系统中,已知时钟频率为12MHZ,试编程使P1.0和P1.1...
可用汇编语言、C语言编程。
80c51单片机120秒延时程序怎么编写
用定时器就可以了,很简单的 这是我的60s倒计时程序 include"reg51.h"char i,j,m,y;unsigned char count=0;unsigned char a[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};sbit p34=P3^4;sbit p35=P3^5;sbit warning=P3^7;void delay(){ TH0=0xd8;TL0=0xf0;TR0...
求助:关于80C51单片机简易计算器设计的程序,要求是汇编语言。谢谢哈...
ADDY:MOV A,40H ;第一个数送累加器 ADD A,R4 ;第一个数加第二个数 JB CY,OF ;溢出 MOV 40H,A ;存本次结果 MOV R5,#0 ;按键次数清零 LJMP BCDSUBT:MOV A,40H SUBB A,R4 JB CY,OF MOV 40H,A MOV R5,#0 LJMP BCDMULT:MOV A,40H MOV B,A MOV A,R4 MUL AB JB OV,OF MOV 40H,A ...
我用的80C51单片机,请问怎样用继电器的通断做输入信号,来控制输出...
将继电器的一副触点的其中一个引脚接5V电源,另一个引脚接单片机的任意一个输入引脚(如P1.1),将另外一个输出引脚(如P2.1)连接你需要的外设。程序的编写,你可以先下载一个空的例程,然后加入:while (1){ P2.1=P1.1; //输入输出的逻辑关系自己定义 delay(100ms); //延时 100ms ...
怎么用80c51用c语言编程,把数据从内部存储器转移到外部存储器?_百度...
扩展RAM编程基础 (1)弄清扩展器件的地址 在图7.2.5中,U3的ABC接单片机A13,A14,A15,所以片选信号对应地址最高位,即:“CBAxxxxx xxxxxxxx”(x为任意)。U4片选接CS1,即Y1,CBA=001,可得U4的地址范围是0x2000~0x3fff。U5接CS3,即Y3,CBA=011,地址为0x6000~0x7fff。U6接CS4,即Y4...
80C51单片机,12mhz.利用中断程序控制8个灯依次亮灭,定时时间为1秒...
TMOD|=0x01;//选择为定时器0模式,工作方式1,仅用TR0打开启动。TH0=0xfe;//给定时器赋初值,定时1ms TL0=0xfc;ET0=1;//打开定时器0中断允许 EA=1;//打开总中断 TR0=1;//打开定时器 } void main(){ Timer0Init();while(1);} void timer0() interrupt 1 { uchar i;for(i=0;...