|
利用定時(shí)/計(jì)數(shù)器T1產(chǎn)生定時(shí)時(shí)鐘,由P2口控制8個(gè)發(fā)光二極管,使8個(gè)指示燈依次一個(gè)一個(gè)閃動(dòng),閃動(dòng)頻率為10次/秒(8個(gè)燈依次亮一遍為一個(gè)周期),循環(huán)。晶振頻率為12MHz。
- 利用定時(shí)/計(jì)數(shù)器T1產(chǎn)生定時(shí)時(shí)鐘,由P2口控制8個(gè)發(fā)光二極管,使8個(gè)指示燈依次一個(gè)一個(gè)閃動(dòng),閃動(dòng)頻率為10次/秒(8個(gè)燈依次亮一遍為一個(gè)周期),循環(huán)。晶振頻率為12MHz。
- #include<reg51.h>
- #include<intrins .h> //包含有左右循環(huán)移位子函數(shù)的庫(kù)
- #define uint unsigned int
- #define uchar unsigned char
- sbit S1=P1^0 ; //定義P1.0
- uchar tt,a;
- void main()
- { TMOD=0X10 ; //設(shè)置定時(shí)器1
- TH1=(65536-50000)/256; //定時(shí)器初值
- TL1=(65536-50000)%256;
- EA=1; //開(kāi)總中斷
- EX1=1 ; //開(kāi)定時(shí)器1中斷
- TR1=1; //啟動(dòng)定時(shí)器1
- a= 0XFE; //LED初始狀態(tài)
- while(1);
- }
- void timer0() interrupt 1// 定時(shí)器1中斷
- { TH1=(65536-50000)/256; //定時(shí)器初值
- TL1=(65536-50000)%256;
- tt++;
- if(tt==2)
- { tt=0;
- P1=a;
- a= _crol_(P1,1); //LED移動(dòng)
- }
- }
- 30. 填空完成程序:在主程序中流水燈無(wú)限循環(huán),INT0中斷時(shí),P1口LED全亮,INT1中斷時(shí)P1口LED全滅。
- #include <reg51.h>
- #include<intrins.h>
- #define uint unsigned int
- #define uch unsigned char
- /* 中斷初始化*/
- void init(void)
- { EA=0 ; //中斷總開(kāi)關(guān)
- ET0=1 ; //開(kāi)中斷0開(kāi)關(guān)。
- ET1=1 ; //開(kāi)中斷1開(kāi)關(guān)
- IT1=0;
- IT0=0;
- }
- void delay(uint z);
- main()
- {uch temp;
- EA=1 ; //中斷初始化
- temp = 0XFE ; //初始狀態(tài)
- while(1)
- {
- P1=temp;
- delay(500);
- temp=_crol_(P1,1) ; //左移
- }
- }
- void int_0(void)interrupt 0 //中斷服務(wù)函數(shù)
- {
- P1=0X00 ; //led全亮
- }
- void int_1(void)interrupt 1 //中斷服務(wù)函數(shù)
- {
- P1=0xfe ; //LED全滅
- }
- void delay(unsigned int z)
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
復(fù)制代碼
|
|