关于数组的问题,这个程序是让led1亮灭三次,led2亮灭三次,led1和led2同时亮四次;
在这个程序没有对led4进行控制,但是在实际电路中led4会随着led1和led2分别亮一下呢?
请教朋友们这是什么原因
单片机源程序如下:
- #include <REG51.H>
- #include<intrins.h>
- sfr P3M0 = 0xB2; //0000,0000 端口3模式寄存器0
- sfr P3M1 = 0xB1; //0000,0000 端口3模式寄存器1
- #define uchar unsigned char
- #define uint unsigned int
- sbit led1=P3^0;
- sbit led2=P3^1;
- sbit led3=P3^3;
- sbit led4=P3^2;
- uchar code Tab0[]={0x02,0x02,0x02,0x03};//闪灯控制表
- uint i;
- /*****************************************************
- 函数功能:延时若Z*10毫秒
- 入口参数:z
- ***************************************************/
- void delay(uint z)
- {
- uint i,j;
- for(i=z;i>0;i--)
- for(j=9200;j>0;j--);
- }
- void wordliang(void);
- /*****************************************************
- 函数功能:p1口灯循环点亮
- ***************************************************/
- main()
- {
- // uint i;
- P3M1=0x30; // IO口设值(工作模式)
- P3M0=0x0f; // IO口设值(工作模式)
- P3=0X00;
-
- while(1)
- {
-
-
- for(i=0;i<3;i++) //led1灯亮
- {
-
- P3=Tab0[i];
- delay(50);
- P3=0x00;
- delay(80);
- }
-
-
- for(i=3;i<6;i++) //led2灯亮
- {
-
- P3=Tab0[i] ;
- delay(50);
- P3=0x00;
- delay(80);
- }
-
-
-
-
- for(i=6;i<10;i++) //led1和led2灯一起亮
- {
-
- P3=Tab0[i] ;
- delay(50);
- P3=0x00;
- delay(80);
- }
-
-
- }
- }
复制代码
|