資料下載
普中科技--各型號產品資料下載鏈接 - STM8單片機 - 普中開源電子分享網 - Powered by Discuz! (prechin.net)
2023-06-28?
1.開發(fā)板
?
?2.軟件
keil,stc-isp。
代碼案例
1.點亮led
89C52RC芯片LED模塊是P2口。
?
?
?
2.led1一秒閃爍
#include<reg52.h>
#include<intrins.h>//引入_nop()_函數
/*led1延時一秒閃爍*/
void Delay500ms() //@11.0592MHz stc-isp生成的500ms代碼
{
unsigned char i, j, k;
_nop_();
i = 4;
j = 129;
k = 119;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
while(1)
{
P2=0xfe; //1111 1110 led1亮
Delay500ms(); //延時500ms
P2=0xff; //1111 1111 全滅
Delay500ms();
}
}
?3.LED流水燈文章來源:http://www.zghlxwxcb.cn/news/detail-510647.html
#include<reg52.h>
#include<intrins.h>
/*led流水燈*/
void Delay1ms(unsigned int xms) //@11.0592MHz 延時=參數*1ms
{
unsigned char i, j;
while(xms)
{
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
xms--;
}
}
void main()
{
int i=0;
char x=0xfe;
while(1)
{
for(i=0;i<8;i++) //循環(huán)8次
{
P2=x;
Delay1ms(100); //延時100ms
x=_crol_(x,1); // x循環(huán)左移一位
}
}
}
?4.獨立按鍵控制led亮滅(按下key1亮,松手滅)
#include<regx52.h>
/*獨立按鍵控制led亮滅
按下key1亮,松手滅*/
void main()
{
while(1)
{
if(P3_1==0)//key1按下
{
P2_0=0;//亮
}else{
P2_0=1;//滅
}
if(P3_0==0)//key2按下
{
P2_2=0;//亮
}else{
P2_2=1;//滅
}
}
}
5.獨立按鍵控制led狀態(tài)
#include<regx52.h>
/*獨立按鍵控制led狀態(tài)
消抖動*/
void Delay(unsigned int xms)//帶參延時函數ms
{
unsigned char i, j;
while(xms--){
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
}
}
void main()
{
while(1)
{
if(P3_1==0) //key1按下
{
Delay(20);//消抖
while(P3_1==0) ; //按下未松一直執(zhí)行空語句
Delay(20);//消抖
P2_0=~P2_0;
}
}
}
6.獨立按鍵實現led二進制遞增
#include<regx52.h>
/*06獨立按鍵實現led二進制遞增*/
void Delay(unsigned int xms)//帶參延時函數ms
{
unsigned char i, j;
while(xms--){
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
}
}
void main()
{
unsigned char LEDNum=0;
while(1)
{
if(P3_1==0) //key1按下
{
Delay(20);//消抖
while(P3_1==0) ; //按下未松一直執(zhí)行空語句
Delay(20);//消抖
LEDNum++; //LEDNum=10,=0000 1010 亮0滅1
P2=~LEDNum; //~LEDNum=1111 0101
}
}
}
7.獨立按鍵實現led左右移位文章來源地址http://www.zghlxwxcb.cn/news/detail-510647.html
#include<regx52.h>
/*07獨立按鍵實現led移位*/
void Delay(unsigned int xms)//帶參延時函數ms
{
unsigned char i, j;
while(xms--){
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
}
}
void main()
{
unsigned char LEDNum;
P2=~0x01;
while(1)
{
/*按下k1,led燈左移一位*/
if(P3_1==0) //key1按下
{
Delay(20);//消抖
while(P3_1==0) ; //按下未松一直執(zhí)行空語句
Delay(20);//消抖
LEDNum++;
if(LEDNum>=8) LEDNum=0;
P2=~(0x01<<LEDNum);//左移1,2,3,...8位
}
/*按下k2,led燈右移一位*/
if(P3_0==0) //key2按下
{
Delay(20);//消抖
while(P3_0==0) ; //按下未松一直執(zhí)行空語句
Delay(20);//消抖
if(LEDNum==0)
LEDNum=7;
else
LEDNum--;
P2=~(0x01<<LEDNum);//左移1,2,3,...8位
}
}
}
8.靜態(tài)數碼管顯示
#include<regx52.h>
/*靜態(tài)數碼管*/
/*
P0:表示數碼管的abcdefg dp
P2.234表示位選 P2=1110 0011是第0號數碼管
*/
void Delay(unsigned int xms)//帶參延時函數ms
{
unsigned char i, j;
while(xms--){
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
}
}
void main()
{
while(1)
{
P2=0xe3;//第一個
P0=0x5b;//顯示2
Delay(5);
P2=0xe7;//第二個
P0=0x4f;//顯示3
Delay(5);
P2=0xeb;//第三個
P0=0x06;//顯示1
Delay(2);
P2=0xf3;
P0=0x5b;//顯示2
Delay(5);
}
}
到了這里,關于89C52RC普中單片機的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!