
這個是我自己diy的單片機開發板:http://m.zg4o1577.cn/bbs/dpj-42590-1.html
- //--------------------------------下面為板上運行通過的,更為簡潔--------------------------------------------------------------
- //這個程序適用于天祥、淘寶上面買的開發板,我自已做的板子也是和它們的腳位一樣,好處是立馬可以20181031 18:05
- /*按一下燈亮再一下燈滅+松手檢測*/
- #include<reg52.h>
- #define uchar unsigned char
- sbit P10=P1^0;
- void delay(int x)
- {
- int a,b;
- for(a=x;a>0;a--)
- for(b=110;b>0;b--);
- }
- void main()
- {
- uchar temp=0;
- P10=0;
- while(1)
- {
- if(T0==0)
- {
- delay(5); //延時去抖
- if(T0==0) //確實被按下了
- {
- temp=!temp;
- P10=temp; //燈的狀態取反了
- while(!T0); //松手檢測,燈取反后就停在這里了直到松手T0=0后退出循環
- delay(500); //燈持續亮500ms以便我們肉眼觀察
- }
- }
- }
- }
-
-
復制代碼
- /*此為自已寫的,
- 功能:實現按一次按鍵燈亮,再按一次燈滅
- 歡迎仿問我的空間里頭有好多單片機C語言代碼
- 2018年10月24于廈門軟件園二期
- */
- #include <pic.h> //此為pic的代碼
- #define uint unsigned int
- #define uchar unsigned char
- void delay(uint x) //延時函數
- {
- uint a,b;
- for(a=x;a>0;a--)
- for(b=110;b>0;b--);
- }
-
- void main() //主函數
- {
- static bit temp; //定義一個靜態的位變量,注意得放在第一行,否則會提示一堆的錯誤
- TRISB=0;PORTB=0xff;
- TRISD=0;PORTD=0x00;
- temp=RD0; //把RD0 LED燈的當前狀態賦給變量temp
- while(1)
- {
- if(RB0==0) //判斷按鍵是否有被按下,有則為0
- {
- delay(10); //去抖
- if(RB0==0) //去抖完得再判斷一次
- {
- temp=!temp; //每按一次,位變量temp取反一次
- while(!RB0) //松手檢測,按下時為0取反為1,一直循環直至松手為1取反后為0退出循環
- RD0=temp; //把取反后的temp值賦給RD0即LED燈
- }
- }
- }
- }
-
- //-----------------------下面為51的代碼----------------------------------------------------
- /*
- #include <reg52.h> //此為51單片機的代碼
- #define uint unsigned int
- #define uchar unsigned char
- void delay(uint x) //延時函數
- {
- uint a,b;
- for(a=x;a>0;a--)
- for(b=110;b>0;b--);
- }
-
- void main() //主函數
- {
- static bit temp; //定義一個靜態的位變量,注意得放在第一行,否則會提示一堆的錯誤
- sbit RD0=P1^1; //定義LED燈為RD0
- sbit RB0=p3^2; //定義INT0為RB0(按鍵)
- temp=RD0; //把RD0 LED燈的當前狀態賦給變量temp
- while(1)
- {
- if(RB0==0) //判斷按鍵是否有被按下,有則為0
- {
- delay(10); //去抖
- if(RB0==0) //去抖完得再判斷一次
- {
- temp=!temp; //每按一次,位變量temp取反一次
- while(!RB0) //松手檢測,按下時為0取反為1,一直循環直至松手為1取反后為0退出循環
- RD0=temp; //把取反后的temp值賦給RD0即LED燈
- }
- }
- }
- }
- */
復制代碼
|