找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 944|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

我的單片機(jī)基礎(chǔ)設(shè)計(jì) 含源代碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:668367 發(fā)表于 2019-12-19 15:16 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
利用定時(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。
  1. 利用定時(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。
  2. #include<reg51.h>
  3. #include<intrins .h>      //包含有左右循環(huán)移位子函數(shù)的庫(kù)
  4. #define uint unsigned int  
  5. #define uchar unsigned char  
  6.   sbit  S1=P1^0              ;                  //定義P1.0
  7. uchar tt,a;
  8. void main()
  9. {     TMOD=0X10 ;               //設(shè)置定時(shí)器1
  10.         TH1=(65536-50000)/256;                //定時(shí)器初值
  11. TL1=(65536-50000)%256;

  12.        EA=1;             //開(kāi)總中斷
  13.        EX1=1 ;             //開(kāi)定時(shí)器1中斷
  14.         TR1=1;            //啟動(dòng)定時(shí)器1
  15. a= 0XFE;                  //LED初始狀態(tài)
  16. while(1);
  17. }
  18. void timer0() interrupt 1// 定時(shí)器1中斷
  19. { TH1=(65536-50000)/256;                                         //定時(shí)器初值
  20. TL1=(65536-50000)%256;

  21. tt++;
  22. if(tt==2)
  23. { tt=0;
  24. P1=a;
  25. a= _crol_(P1,1);                   //LED移動(dòng)
  26. }
  27. }
  28. 30. 填空完成程序:在主程序中流水燈無(wú)限循環(huán),INT0中斷時(shí),P1口LED全亮,INT1中斷時(shí)P1口LED全滅。
  29. #include <reg51.h>
  30. #include<intrins.h>
  31. #define uint unsigned int
  32. #define uch unsigned char
  33. /* 中斷初始化*/
  34. void init(void)
  35. {   EA=0      ;            //中斷總開(kāi)關(guān)
  36.    ET0=1       ;           //開(kāi)中斷0開(kāi)關(guān)。
  37.         ET1=1      ;                      //開(kāi)中斷1開(kāi)關(guān)
  38.      IT1=0;         
  39.          IT0=0;
  40. }
  41. void delay(uint z);
  42. main()
  43. {uch temp;
  44.        EA=1           ;             //中斷初始化
  45.     temp = 0XFE       ;             //初始狀態(tài)
  46.             while(1)
  47.           {
  48.           P1=temp;
  49.           delay(500);
  50.           temp=_crol_(P1,1)         ;         //左移
  51.           }
  52. }
  53. void int_0(void)interrupt  0  //中斷服務(wù)函數(shù)
  54. {
  55.    P1=0X00      ;                                 //led全亮
  56. }
  57. void int_1(void)interrupt  1  //中斷服務(wù)函數(shù)
  58. {
  59.     P1=0xfe             ;                         //LED全滅
  60. }
  61. void delay(unsigned int z)
  62. {
  63.   uint x,y;
  64.   for(x=z;x>0;x--)
  65.     for(y=110;y>0;y--);
  66. }

復(fù)制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表