;假设1:D1~D8八个彩灯接在P1口,输出低电平发光 ;假设2:系统晶振为12MHz ;假设3:N = 5 ;程序如下:ORG 0000H MOV R3, #5 ;N=5 LOOP0:MOV A, #0FFH MOV P1, #0FFH ;开始时全灭 ;---逐个
;以89c51单片机为例,假定用P1控制LED:IO_LED EQU P1;led_0 BIT P1.0;led_1 BIT P1.1;led_2 BIT P1.2;led_3 BIT P1.3;led_4 BIT P1.4;led_5 BIT P1.
//主程序 void main(){ uint s;while(1){ P0=0xfe;DelayMS(150);for(s=8;s>1;s--){ P0=_crol_(P0,1); //P0 的值向左循环移动 DelayMS(150);} P0=0x00;DelayMS(150);p0=0xff;DelayMS(150);
MAIN:MOVA,#0FFH;设置左移初值 CLRC;C=0 MOVR2,#08H;设置左移次数 LOOP:RLCA;左移1位 MOVP2,A;输出到P2 CALLDELAY;延时 DJNZR2,LOOP;左移7次 MOVR2,#07H;LOOP1:RRCA;右移1位 MOVP2,A;输出到P2 CALLDELAY;
单片机用汇编语言编写用一个控制器控制8个LED灯亮
2、奇偶号灯间隔亮灭:隔一个灯亮一个灯亮灯时间为1s,没有灯全灭的时候 3、依次闪烁、切换时间为3秒,闪烁时间为2秒,我理解的是,没三秒钟有一个灯在闪烁,其中有一秒钟是灭灯状态 程序中使用了P1口与8个发光
给个四路:定意一个变量;if(按键1按下)变量为1;if(按键2按下)变量为2;if(变量==1){ 左移控制;} else if(变量==2){ 右移控制;}
count=0;//清零重新计数 P1=~P1;//0.5s闪烁 } }
define FALSE 0 define uchar unsigned char define th0 0x9e define tl0 0x58//25ms @12MHz Fosc鬼知道你的晶振多大 sbit LED=P1^0;//鬼又知道你的LED在哪 void Timer0()interrupt 1 { TL0=tl0;TH0=th0;LED
while(ms--){ for(i=0;i<120;t++){ ; } }}void main(){ unsigned char i=0,j=0; PData=0x00;//全灭状态 for (i=8;i>0;i--){//控制常亮的位置,先从最高位开始,依次循环到最低
mov ie,#83h mov p1,#00h jmp end
单片机MCS-51汇编问题。P1 口接8个LED灯,程序运行后,8个LED灯闪烁,闪烁频率为20Hz。急急急!!!!!!
用移位操作,首先把P1口赋值,然后向右移位,判断是否移到最后移位,如果不是,一直移位,如果是,则反向移位,判断是否移位到第一位,如果是则循环到右移,具体代码就自己写了。代码不难,我只是记不清楚具体定义了。
首先定义变量类似于P1_2 = P1^2这种,先把这八个管脚全部定义好,之后给个for循环,让P1(假设的你LED灯连接的是P1口)口的P1^0~P1^7相关标志位依次等于0或者1(0还是1需要看你在LED等上给的是高电位亮还是低电位
1、创建项目,如图所示。2、创建延迟函数。3、创建C语言主函数。设计unsigned char k=0;变量。4、添加循环效果。5、点亮灯,通过k++,改变效果。6、添加延迟效果,单片机就可以控制8个灯依次亮,全亮了,然后再依次灭。
如果想从右到左依次亮一开始那改成MOV A,#01H RR A 改成RL A就可以了。别的一样 全灭的话直接赋值 MOV P1,#00H 全亮的话直接赋值MOV P1,#0FFH 纯粹手打。希望采纳。
while(1){ P0=0xfe;DelayMS(150);for(s=8;s>1;s--){ P0=_crol_(P0,1); //P0 的值向左循环移动 DelayMS(150);} P0=0x00;DelayMS(150);p0=0xff;DelayMS(150);
单片机用汇编做一个控制8个LED灯泡从左到右依次点亮,最后全部亮,再全部熄灭后重复前面的过程
LOOP1:MOV P0,LED JNB FLAG,MOV A,LED RL A MOV LED,A CLR FLAG DJNZ R2,LOOP1 MOV LED,#0FEH MOV R2,#8 LOOP2:MOV P0,LED JNB FLAG,MOV A,LED RL A RL A MOV LED,A CLR FLAG DJNZ R2,LOOP2 MOV
KEY1 EQU P1.0 KEY2 EQU P1.1 ORG 0000H LJMP MAIN ORG 0030H MAIN:MOV A,#0FEH MOV P2,A LOOP:JB KEY1,LOOP1 MOV P2,#0FFH LCALL DELAY RL A MOV P2,A LCALL DELAY SJMP LOOP LOOP1:JB KEY2,LOOP
;假设1:D1~D8八个彩灯接在P1口,输出低电平发光 ;假设2:系统晶振为12MHz ;假设3:N = 5 ;程序如下:ORG 0000H MOV R3, #5 ;N=5 LOOP0:MOV A, #0FFH MOV P1, #0FFH ;开始时全灭 ;---逐个
求汇编,八个led交替闪烁,汇编语言汇编语言 按下开关s1(开关是那种按下去不会弹回来的),led1.3.5.7和led2.4.6.8交替闪烁,按下s2,led1234和led5678交替闪烁,间隔都是0.5秒,按下s3全灭 --- 电路与程序
求汇编,八个led交替闪烁,汇编语言汇编语言
不会。。。。路过。。。。网络100分 专业人士也不会花那么多时间来 编这个题吧 应该把 手机 留下/程序:ex1_1.c //功能:控制一个信号灯闪烁程序 #include //包含头文件REG51.H,定义了MCS-51单片机的特殊功能寄存器 sbit P1_0=P1^0; //定义位名称 void delay(unsigned char i); //延时函数声明 void main() //主函数 { while(1) { P1_0=0; //点亮信号灯 delay(10); //调用延时函数,实际变量为10 P1_0=1; //熄灭信号灯 delay(10); //调用延时函数,实际变量为10 } } //函数名:delay //函数功能:实现软件延时 //形式参数:unsigned char i; // i控制空循环的外循环次数,共循环i*255次 //返回值:无 void delay(unsigned char i) //延时函数,无符号字符型变量i为形式参数 { unsigned char j,k; //定义无符号字符型变量j和k for(k=0;k<i;k++) //双重for循环语句实现软件延时 for(j=0;j<255;j++); }
//prj1 流水灯实验,LED灯是共阳极,给0亮。J1跳线帽 //用的是移位的方法 //头文件定义 #include #include //延时函数定义 void delay(void) { unsigned int i; unsigned int j; for(i=200;i>0;i--) { for(j=200;j>0;j--); } } void main() { P0 = 0xfe; //1111 1110 delay(); while(1) { P0 = _crol_(P0,1) ; // 将P0端口循环左移 delay(); if(P0 == 0x7f) { P0 = _cror_(P0,1); delay(); P0 = _cror_(P0,1); delay(); P0 = _cror_(P0,1); delay(); P0 = _cror_(P0,1); delay(); P0 = _cror_(P0,1); delay(); P0 = _cror_(P0,1); delay(); P0 = _cror_(P0,1); delay(); } } }
#include #include #define uchar unsigned char uchar cnt; void t0isr() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; cnt++; P1=_crol_(P1,1); } main() { TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; ET0=1; EA=1; P1=0xfe; while(1); }
51汇编程序如下: KEY EQU P3.2 LED EQU P1 ORG 0000H LJMP MAIN ORG 0030H MAIN: CLR 00H MOV A,#0FEH LOOP: JB P3.2,LOOP1 JNB P3.2,$ CPL 00H LOOP1: JB 00H,LOOP2 MOV LED,#0FFH SJMP LOOP LOOP2: MOV P1,A RL A LCALL DELAY SJMP LOOP DELAY: MOV R2,#200 DLY1: MOV R3,#250 DJNZ R3,$ DJNZ R2,DLY1 RET END
#include #include #define uchar unsigned char #define uint unsigned int //延时 void DelayMS(uint x) { uchar i; while(x--) { for(i=0;i<120;i++); } } //主程序 void main() { uint s; while(1) { P0=0xfe; DelayMS(150); for(s=8;s>1;s--) { P0=_crol_(P0,1); //P0 的值向左循环移动 DelayMS(150); } P0=0x00; DelayMS(150); P0=0xff; DelayMS(150); } }