www.gsyw.net > 在程序正常运行时P1口的8个LED灯作单灯左移8次而后...

在程序正常运行时P1口的8个LED灯作单灯左移8次而后...

#include int main() { int a = 0b11111111; while(a) { printf("%d\n",a&1); a=a>>1; } return 0; }

P1是寄存器 你对他直接操作貌似不妥

#include<reg52.h> unsigned char count; void init()//初始化程序 { P1=0xf0;//给P1口赋值 TMOD=0X01;//定时器0的工作方式1 TH0=(65536-50000)/256;//50ms赋初值 TL0=(65536-50000)%256; EA=1;//开总中断 ET0=1;//开定时器0中断 TR0

ORG 00H AJMP MAIN ORG 03H AJMP EX0INT ORG 30H MAIN:SETB EA SETB EX0 SETB IT0 MOV A,#01H MAIN1:MOV P1,A ACALL DELAY JB F0,RR0 RL A AJMP MAIN1 RR0:RR A AJMP MAIN1 EX0INT:CPL F0 RETI DELAY:MOV R7,#0 MOV R6,#0 MOV R5,#3 DJNZ R5,$ DJNZ R6,$-4 DJNZ R7,$-8 RET END 错了错了,题目没看清

依次接7个热敏开关

switch(p1){ case 0xfe:p0=0x01;break; case 0xfd:p0=0x02;break; case 0xfb:p0=0x04;break; case 0xf7:p0=0x08;break; case 0xef:p0=0x10;break; case 0xdf:p0=0x20;break; case 0xbf:p0=0x40;break; case 0x7f:p0=0x80;break; default:break;}

8盏LED灯循环点亮,间隔时间为50ms,你能分辨不?还是给你改为间隔时间为1s,用定时器延时子程序实现 org 0000h jmp start org 0030h start: mov A,#0FEH; mov R2,#8; LOOP1: mov p1,A; 左边4个LED每隔1S亮1个.从P1.0到P1.7. call

十六进制0xfe,对应二进制 1111_1110 这个二进制,对应引脚为 p1.7 p1.6 p1.5 p1.4 p1.3 p1.2 p1.1 p1.0 p1 = 0xfe,则对应p1.0为0,其他引脚输出1.你的led,必然是共阳极.所以p1.0对应的灯亮.(如果是共阴极,那么p1.7~p1.1共7个led亮,p1.0上的led不亮)

假设51单片机,P1口点亮,低电平点亮.unsigned char x =0xfe,i=0; for(i=0,i{ x=_crol_(x,1); P1=x; delay500ms(); } for(i=0,i{ x=_cror_(x,1); P1=x; delay500ms(); }

#include <AT89X51.H> void init_t0(void); void t0_int(void) interrupt 1; int i = 8; //循环次数为8 void main() { P1 = 0xff; //初始化LED,8个LED全灭,(假设低电平点亮) init_t0() ; while(1); //循环等待定时中断 } void init_t0() //定时器0初始化

网站地图

All rights reserved Powered by www.gsyw.net

copyright ©right 2010-2021。
www.gsyw.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com