c语言基础知识,省略,都会
【资料图】
keil调试,省略,几乎不用,也不好用
课后作业4流水灯右移
#include <>
typedef unsigned char uchar;
typedef unsigned int uint;
typedef unsigned long ulong;
sbit ADDR0 = P1 ^ 0;
sbit ADDR1 = P1 ^ 1;
sbit ADDR2 = P1 ^ 2;
sbit ADDR3 = P1 ^ 3;
sbit ENLED = P1 ^ 4;
sbit led = P0 ^ 0;
void Delay500ms() //@
{
unsigned char data i, j, k;
//_nop_();
i = 4;
j = 129;
k = 119;
do
{
do
{
while (--k)
;
} while (--j);
} while (--i);
}
void main(void)
{
ENLED = 0; // 138总开关打开
ADDR3 = 1; // 1110是LED的译码输出:14,选通LED的供电
ADDR2 = 1;
ADDR1 = 1;
ADDR0 = 0;
while (1)
{
// 流水灯右移
P0 = 0x7F; // 0111-1111
Delay500ms();
P0 = 0xBF; // 1011-1111
Delay500ms();
P0 = 0xDF; // 1101-1111
Delay500ms();
P0 = 0xEF; // 1110-1111
Delay500ms();
P0 = 0xF7; // 1111-0111
Delay500ms();
P0 = 0xFB; // 1111-1011
Delay500ms();
P0 = 0xFD; // 1111-1101
Delay500ms();
P0 = 0xFE; // 1111-1110
Delay500ms();
// 返回第一部
}
}
//第二种方法
#include <>typedef unsigned char uchar;typedef unsigned int uint;typedef unsigned long ulong;sbit ADDR0 = P1 ^ 0;sbit ADDR1 = P1 ^ 1;sbit ADDR2 = P1 ^ 2;sbit ADDR3 = P1 ^ 3;sbit ENLED = P1 ^ 4;sbit led = P0 ^ 0;void Delay500ms() //@{ unsigned char data i, j, k; //_nop_(); i = 4; j = 129; k = 119; do { do { while (--k) ; } while (--j); } while (--i);}void main(void){ char cnt; ENLED = 0; // 138总开关打开 ADDR3 = 1; // 1110是LED的译码输出:14,选通LED的供电 ADDR2 = 1; ADDR1 = 1; ADDR0 = 0; cnt=7; while (1) { // 流水灯右移 P0= ~(1<<cnt); Delay500ms(); cnt--; if(cnt<0) { cnt=7; } // 返回第一步 }}课后第五题,左移到头,接着右移,,,反复
#include <>typedef unsigned char uchar;typedef unsigned int uint;typedef unsigned long ulong;sbit ADDR0 = P1 ^ 0;sbit ADDR1 = P1 ^ 1;sbit ADDR2 = P1 ^ 2;sbit ADDR3 = P1 ^ 3;sbit ENLED = P1 ^ 4;sbit led = P0 ^ 0;void Delay500ms() //@{ unsigned char data i, j, k; //_nop_(); i = 4; j = 129; k = 119; do { do { while (--k) ; } while (--j); } while (--i);}void main(void){ ENLED = 0; // 138总开关打开 ADDR3 = 1; // 1110是LED的译码输出:14,选通LED的供电 ADDR2 = 1; ADDR1 = 1; ADDR0 = 0; while (1) { P0=0xFE;//1111-1110 Delay500ms(); P0=0xFD;//1111-1101 Delay500ms(); P0=0xFB;//1111-1011 Delay500ms(); P0=0xF7;//1111-0111 Delay500ms(); P0=0xEF;//1110-1111 Delay500ms(); P0=0xDF;//1101-1111 Delay500ms(); P0=0xBF;//1011-1111 Delay500ms(); P0=0x7F;//0111-1111 Delay500ms(); P0=0xBF;//1011-1111 Delay500ms(); P0=0xDF;//1101-1111 Delay500ms(); P0=0xEF;//1110-1111 Delay500ms(); P0=0xF7;//1111-0111 Delay500ms(); P0=0xFB;//1111-1011 Delay500ms(); P0=0xFD;//1111-1101 Delay500ms(); //返回第一步 }}
//第二种方法
#include <>typedef unsigned char uchar;typedef unsigned int uint;typedef unsigned long ulong;sbit ADDR0 = P1 ^ 0;sbit ADDR1 = P1 ^ 1;sbit ADDR2 = P1 ^ 2;sbit ADDR3 = P1 ^ 3;sbit ENLED = P1 ^ 4;sbit led = P0 ^ 0;void Delay500ms() //@{ unsigned char data i, j, k; //_nop_(); i = 4; j = 129; k = 119; do { do { while (--k) ; } while (--j); } while (--i);}void main(void){ char cnt; ENLED = 0; // 138总开关打开 ADDR3 = 1; // 1110是LED的译码输出:14,选通LED的供电 ADDR2 = 1; ADDR1 = 1; ADDR0 = 0; while (1) { cnt = 0; while (1) { P0 = ~(1 << cnt); Delay500ms(); cnt++; if (cnt == 8) { break; } } cnt = 6; while (1) { P0 = ~(1 << cnt); Delay500ms(); cnt--; if (cnt == 0) { break; } } }}