点亮LED STC15W1048脚单片机,开漏和推挽输出比较( 二 )


开漏和推挽输出比较
#include "STC15Wxx.h"#include "init.h"#include "delay.h"sbit LED1 = P3^1;sbit LED2 = P3^0;void main(void){system_init();LED1 = 0;//LED1 点亮LED2 = 0;//LED2 点亮while(1){LED1 = 1;LED2 = 1;Delay1s();//在此只加了一个延时LED1 = 0;LED2 = 0; Delay1s();//不加延时,灭后迅速被点亮}}
void (void)
void system_init(void){//配置成准双向IO口,内部有弱上拉//P0M0 和P0M1 两个寄存器可以控制P0的7个IO口P0M0 = 0x00;P0M1 = 0x00;P1M0 = 0x00;P1M1 = 0x00;P2M0 = 0x00;P2M1 = 0x00;P3M0 = 0x00;P3M1 = 0x00;P4M0 = 0x00;P4M1 = 0x00;P5M0 = 0x00;P5M1 = 0x00;P6M0 = 0x00;P6M1 = 0x00;P7M0 = 0x00;P7M1 = 0x00;P3M0 |= 0x02;//P3M1 0P3M0 1配置P3^1 推挽输出//配置}
#include "delay.h"#include "intrins.h"//包含空指令_nop/*STC官方提供的有延时函数STC15W104 系列 内部RC晶振ISP编程时内部时钟从5MHz~35MHz可设(5.5296MHz / 11.0592MHz / 22.1184MHz / 33.1776MHz).低功耗设置时,我们可以选择5.5296MHz的晶振 。*/void Delay100ms()//@5.5296MHz{unsigned char i, j, k;_nop_();_nop_();i = 3;j = 26;k = 223;do{do{while (--k);} while (--j);} while (--i);}void Delay1s(){char i ;for(i=0;i<10;i++){Delay100ms();}}void Delay2s(){char i ;for(i=0;i<20;i++){Delay100ms();}}