久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

S3C2440微控制器外部中斷實驗

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:757182 發(fā)表于 2020-5-21 10:46 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
實驗?zāi)康模赫莆誗3C2440微控制器I/O和外部中斷的使用方法
實驗內(nèi)容:
用外部中斷的方式,實現(xiàn):
(1)按下K11,LED1閃爍2次;
(2)按下K12,LED2閃爍2次;
(3)按下K13,LED3閃爍2次;
(4)按下K14,LED4閃爍2次;
(5)按下K15,LED1與LED3一起閃爍2次;
(6)按下K16,LED2與LED4一起閃爍2次;
要求使用下降沿觸發(fā)外部中斷。

  1. #include "2440addr.h"
  2. #include "2440lib.h"
  3. #define rGPBCON    (*(volatile unsigned *)0x56000010) //Port B control
  4. #define rGPBDAT    (*(volatile unsigned *)0x56000014) //Port B data
  5. #define rGPBUP     (*(volatile unsigned *)0x56000018) //Pull-up control B

  6. U16 i,a;
  7. int delay(int times);

  8. void INIT_interrupt(void);
  9. static void __irq Eint1_ISR(void)
  10. {
  11.         U8 j = 0;
  12.         for( j=0;i<2;i++){
  13.             rGPBDAT=(rGPBDAT&~(0xf<<5))|0x1c0;    //LED1亮  1110
  14.             delay(50000000);
  15.             rGPBDAT=(rGPBDAT&~(0xf<<5))|0x1E0;    //全滅 1111       
  16.             delay(50000000);
  17.             rSRCPND=(rSRCPND&~(0x1<<1))|(0x1<<1);
  18.             rINTPND=(rINTPND&~(0x1<<1))|(0x1<<1);
  19.         }
  20. }
  21. static void __irq Eint2_ISR(void)
  22. {       
  23.         U8 j = 0;
  24.         for(j=0;i<2;i++){
  25.                 rGPBDAT=(rGPBDAT&~(0xf<<5))|0x1a0;       //LED2亮  1101
  26.             delay(50000000);
  27.             rGPBDAT=(rGPBDAT&~(0xf<<5))|0x1E0;       //全滅 1111
  28.             delay(50000000);
  29.                 rSRCPND=(rSRCPND&~(0x1<<2))|(0x1<<2);
  30.             rINTPND=(rINTPND&~(0x1<<2))|(0x1<<2 );
  31.     }
  32. }
  33. static void __irq Eint3_ISR(void)
  34. {       
  35.         U8 j = 0;
  36.         for(j=0;i<2;i++){
  37.                 rGPBDAT= (rGPBDAT&~(0xf<<5))|0x160;      //LED3亮 1011
  38.             delay(50000000);
  39.             rGPBDAT=(rGPBDAT&~(0xf<<5))|0x1E0;       //全滅 1111
  40.             delay(50000000);
  41.                 rSRCPND=(rSRCPND&~(0x1<<3))|(0x1<<3);
  42.             rINTPND=(rINTPND&~(0x1<<3))|(0x1<<3 );
  43.     }
  44. }
  45. static void __irq Eint4_7_ISR(void)
  46. {
  47.         U8 j = 0;
  48.         if(rEINTPEND == (rEINTPEND&~(0x1<<4))|(0x1<<4)){
  49.         for(j=0;i<2;i++){
  50.                  rGPBDAT= (rGPBDAT&~(0xf<<5))|0x0e0;      //LED4亮 0111
  51.          delay(50000000);
  52.          rGPBDAT=(rGPBDAT&~(0xf<<5))|0x1E0;       //全滅 1111
  53.          delay(50000000);
  54.          }
  55.      rEINTPEND=(1<<4);
  56.      ClearPending(BIT_EINT4_7);
  57.         }else if(rEINTPEND == (rEINTPEND&~(0x1<<5))|(0x1<<5)){
  58.         for(j=0;i<2;i++){
  59.          rGPBDAT= (rGPBDAT&~(0xf<<5))|0x140;      //LED1,3亮 1010
  60.          delay(50000000);
  61.          rGPBDAT=(rGPBDAT&~(0xf<<5))|0x1E0;       //全滅 1111
  62.          delay(50000000);
  63.          }
  64.      rEINTPEND=(1<<5);
  65.      ClearPending(BIT_EINT4_7);
  66.         }else if(rEINTPEND == (rEINTPEND&~(0x1<<6))|(0x1<<6)){
  67.         for(j=0;i<2;i++){
  68.                  rGPBDAT= (rGPBDAT&~(0xf<<5))|0xA0;      //LED2,4亮 0101
  69.          delay(50000000);
  70.          rGPBDAT=(rGPBDAT&~(0xf<<5))|0x1E0;       //全滅 1111
  71.          delay(50000000);
  72.          }
  73.      rEINTPEND=(1<<6);
  74.      ClearPending(BIT_EINT4_7);     
  75.         }
  76.         rSRCPND=(rSRCPND&~(0x1<<1))|(0x1<<1);
  77.     rINTPND=(rINTPND&~(0x1<<1))|(0x1<<1 );
  78.     rEINTPEND=(rEINTPEND&~(0x7<<4))|(0x7<<4);
  79. }

  80. void INIT_interrupt()
  81. {

  82.      rINTMSK=(rINTMSK&~(0x1<<1));  //中斷屏蔽(INTMSK)寄存器
  83.     //56000050 11                     10
  84.         rGPFCON = (rGPFCON&~(0x3<<2))|(0x2<<2);//GPF1設(shè)置為 外部中斷1
  85.         rGPFCON = (rGPFCON&~(0x3<<4))|(0x2<<4);//GPF2設(shè)置為 外部中斷2
  86.         rGPFCON = (rGPFCON&~(0x3<<6))|(0x2<<6);//GPF3設(shè)置為 外部中斷3
  87.         rGPFCON = (rGPFCON&~(0x3<<8))|(0x2<<8);//GPF4設(shè)置為 外部中斷4
  88.         rGPFCON = (rGPFCON&~(0x3<<10))|(0x2<<10);//GPF5設(shè)置為 外部中斷5
  89.         rGPFCON = (rGPFCON&~(0x3<<12))|(0x2<<12);//GPF6設(shè)置為 外部中斷6
  90.        
  91.         rEXTINT1 =(rEXTINT1&~(0x7<<4))|(0x2<<4)  //外部中斷1,使用下降沿觸發(fā)
  92.     rEXTINT1 =(rEXTINT1&~(0x7<<8))|(0x2<<8)  //外部中斷2,使用下降沿觸發(fā)
  93.         rEXTINT1 =(rEXTINT1&~(0x7<<12))|(0x2<<12)  //外部中斷3,使用下降沿觸發(fā)
  94.     rEXTINT1 =(rEXTINT1&~(0x7<<16))|(0x2<<16)  //外部中斷4,使用下降沿觸發(fā)
  95.     rEXTINT1 =(rEXTINT1&~(0x7<<20))|(0x2<<20)  //外部中斷5,使用下降沿觸發(fā)
  96.     rEXTINT1 =(rEXTINT1&~(0x7<<24))|(0x2<<24)  //外部中斷6,使用下降沿觸發(fā)

  97.     pISR_EINT1=(U32)Eint1_ISR;//把EINT1的中斷入口地址放進(jìn)去
  98.     pISR_EINT2=(U32)Eint2_ISR;//把EINT2的中斷入口地址放進(jìn)去
  99.     pISR_EINT3=(U32)Eint3_ISR;//把EINT3的中斷入口地址放進(jìn)去
  100.     pISR_EINT4_7=(U32)Eint4_7_ISR;//把EINT4_7的中斷入口地址放進(jìn)去



  101.     rSRCPND=(rSRCPND&~(0xF<<1))|(0xF<<1);     //初始化時也清除一下掛起寄存器
  102.     rINTPND=(rINTPND&~(0xF<<1))|(0xF<<1);
  103.     rEINTPEND=(rEINTPEND&~(0x7<<4))|(0x7<<4);
  104.    
  105.             
  106.     //如果有外部中斷4-23,則中斷掛起寄存器也要清零一下,中斷屏蔽寄存器也要改為可服務(wù)
  107.     rINTMSK=(rINTMSK&~(0xF<<1))|(0x0<<1);  //中斷屏蔽(INTMSK)寄存器 EINT1\ENIT2\ENIT3\ENIT4_7使能
  108.     rEINTMASK = (rEINTMASK&~(0x7<<4))|(0x0<<4);//子中斷屏蔽寄存器 EINT4\ENIT5\ENIT6使能

  109. }


  110. /*  自定義簡單延遲程序  */
  111. int delay(int times)
  112. {
  113.     int i;
  114.     for(i=0;i<times;i++);
  115.     return 0;
  116. }




  117. void xmain(void)
  118. {
  119.         ChangeClockDivider(3,1);
  120.         ChangeMPllValue(127,2,1);                //405MHZ
  121.         //Rtc_Init();                                //實時時鐘初始化
  122.         Isr_Init();
  123.         Uart_Init(0, 115200);
  124.         Uart_Select(0);
  125.        
  126.         rGPBCON=(rGPBCON & ~(0xFF<<10)) | (0x55<<10);//GPB5-8  set output
  127.     rGPBUP |= (0xFF<<5);   //disable GPB pull up

  128.         INIT_interrupt();
  129.        
  130.         while(1);   
  131. }
復(fù)制代碼

全部資料51hei下載地址:
外部中斷實驗.zip (127.18 KB, 下載次數(shù): 11)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:277550 發(fā)表于 2024-1-6 20:13 | 只看該作者
還有TX玩 2440 么
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久免费精品 | 日韩精品一区二区三区四区视频 | 91在线影院 | 欧美日韩免费一区二区三区 | 欧美二区在线 | 黄色毛片在线观看 | 亚洲一区 | 国产免费观看一区 | 日本中文在线视频 | 午夜丁香视频在线观看 | 国产精品久久7777777 | 久久人爽爽人爽爽 | 日韩a在线 | 国产欧美日韩久久久 | 3p视频在线观看 | 午夜免费视频 | 国产日韩欧美精品一区二区 | 精品一区二区三区91 | 男人天堂社区 | 九九热在线精品视频 | 九九热热九九 | 国产在线精品一区二区三区 | 国产精品久久久久久久久久久免费看 | 成人国产精品久久久 | 国产精品一区二区欧美 | 成人在线播放网址 | 综合久久99| 久久久久久亚洲精品 | 精品国产乱码久久久久久闺蜜 | 日韩中文字幕 | 一区二区视频免费观看 | 91高清在线| 一区二区高清 | 亚洲精品成人 | 99爱在线观看 | 免费一级做a爰片久久毛片潮喷 | 成人a免费 | 国产美女网站 | 福利电影在线 | 午夜理伦三级理论三级在线观看 | 91av导航|