第四章续3C51程序设计.pptVIP

  • 4
  • 0
  • 约1.77千字
  • 约 10页
  • 2016-01-07 发布于贵州
  • 举报
第四章续3C51程序设计

流水灯程序设计 硬件电路图如下所示: 流程图 intrins.h库函数 2、#includeintrins.h intrins.h库函数包含:_crol_字符循环左移;_cror_字符循环右移; _irol_整数循环左移;_iror_整数循环右移; _lrol_长整数循环左移;_lrorl_长整数循环右移; _nop_空操作8051NOP指令;_testbit_测试并清零位8051JBC指令 _crol_字符循环左移函数 unsigned char _crol_(unsigned char dat,unsigned char n) 例如:P2=_crol_(P2,1); sel=_crol_(sel,1); 源程序: #includereg51.h #includeintrins.h //移位库函数包含于此头文件中 void delay(unsigned int d) //定义延时子函数 { while(--d0);} void main() { unsigned char i,sel; while(1) { sel=0xfe; for(i=0;i=8;i++) { P1=sel; //显示变量赋给P1口 delay(50000); //延时 sel=_crol_(sel,1); //改变显示变量 } } } 十字路口交通灯 如果一个单位时间为1秒,这里设定的十字路口交通灯按如下方式四个步骤循环工作: 60个单位时间,南北红,东西绿; 10个单位时间,南北红,东西黄; 60个单位时间,南北绿,东西红; 10个单位时间,南北黄,东西红; 用P1端口的6个引脚控制交通灯,高电平灯亮,低电平灯灭。 #include reg51.h sbit SNRed =P1^0; //南北方向红灯 sbit SNYellow =P1^1; //南北方向黄灯 sbit SNGreen =P1^2; //南北方向绿灯 sbit EWRed =P1^3; //东西方向红灯 sbit EWYellow=P1^4; //东西方向黄灯 sbit EWGreen =P1^5; //东西方向绿灯 /* 用软件产生延时一个单位时间 */ void Delay1Unit( void ) { unsigned int i, j; for( i=0; i1000; i++ ) for( j0; j1000; j++ ); //通过实测,调整j循环次数,产生1ms延时 } 延时n秒的函数 void Delay( unsigned int n ) { for( ; n!=0; n-- ) Delay1Unit(); } 主函数 void main( void ) { while( 1 ) { SNRed=0; SNYellow=0; SNGreen=1; EWRed=1; EWYellow=0; EWGreen=0; Delay( 60 ); SNRed=0; SNYellow=1; SNGreen=0; EWRed=1; EWYellow=0; EWGreen=0; Delay( 10 ); SNRed=1; SNYellow=0; SNGreen=0; EWRed=0; EWYellow=0; EWGreen=1; Delay( 60 ); SNRed=1; SNYellow=0; SNGreen=0; EWRed=0; EWYellow=1; EWGreen=0; Delay( 10 ); } } * * 开始 P1口初始化 点亮D1发光二极管 延时 发光二极管移到下一位 循环 _cror_字符循环右移函数 unsigned char _cror_(unsigned char dat,unsigned char n) 例如:P1=_cror_(P2,1) led=_cror_(led,1);

文档评论(0)

1亿VIP精品文档

相关文档