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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2548|回復: 7
收起左側(cè)

STC15單片機定時器問題 一直卡死在中斷里執(zhí)行中斷的內(nèi)容

[復制鏈接]
ID:983394 發(fā)表于 2023-2-7 14:16 | 顯示全部樓層 |閱讀模式
如下圖所示 ,本想用定時器4做計數(shù)器的,但是測試發(fā)現(xiàn)一直卡死在中斷里執(zhí)行中斷的內(nèi)容,無論咋樣都挑不來,現(xiàn)在用的定時器還是不行 ,進入中斷后先把中斷關了執(zhí)行完再開還是都不,加入io口還是不行,實在搞不懂了,請教一下大佬們


回復

使用道具 舉報

ID:57657 發(fā)表于 2023-2-7 17:25 | 顯示全部樓層
打開中斷后必須有中斷入口函數(shù),否則程序會跑飛,具體請?zhí)峁┰创a。
回復

使用道具 舉報

ID:130230 發(fā)表于 2023-2-7 17:53 | 顯示全部樓層
你看看定時器4的中斷號是多少,keil只支持32個編號,如果大于32需要自己用空閑的中斷寫個跳轉(zhuǎn)。
回復

使用道具 舉報

ID:1034262 發(fā)表于 2023-2-7 20:19 | 顯示全部樓層
樓主,STC官方有很多完善的例子源碼,為什么不下來試試呢?自己摸索浪費時間。
回復

使用道具 舉報

ID:1034262 發(fā)表于 2023-2-7 20:19 | 顯示全部樓層
jizhongbiao 發(fā)表于 2023-2-7 17:53
你看看定時器4的中斷號是多少,keil只支持32個編號,如果大于32需要自己用空閑的中斷寫個跳轉(zhuǎn)。

定時器的中斷號不會大于31的。
回復

使用道具 舉報

ID:965189 發(fā)表于 2023-2-7 21:42 | 顯示全部樓層
把程序帖出來大家就容易幫你。
回復

使用道具 舉報

ID:130230 發(fā)表于 2023-2-8 16:32 | 顯示全部樓層
coody_sz 發(fā)表于 2023-2-7 20:19
定時器的中斷號不會大于31的。

51架構是3個定時器,定時器4的中斷號大概率是大于31的
回復

使用道具 舉報

ID:155507 發(fā)表于 2023-2-8 17:47 | 顯示全部樓層
STC官方有很多完善的例子源碼,為什么不下來試試呢?


  1. /*---------------------------------------------------------------------*/
  2. /* --- STC MCU Limited ------------------------------------------------*/
  3. /* --- STC15F4K60S4 系列 定時器4可編程時鐘分頻輸出舉例-----------------*/

  4. /* 如果要在程序中使用此代碼,請在程序中注明使用了STC的資料及程序        */
  5. /* 如果要在文章中應用此代碼,請在文章中注明使用了STC的資料及程序        */
  6. /*---------------------------------------------------------------------*/

  7. //本示例在Keil開發(fā)環(huán)境下請選擇Intel的8058芯片型號進行編譯
  8. //若無特別說明,工作頻率一般為11.0592MHz


  9. #include "reg51.h"

  10. typedef unsigned char BYTE;
  11. typedef unsigned int WORD;

  12. #define FOSC 11059200L

  13. //-----------------------------------------------

  14. sfr P0M1 = 0x93;
  15. sfr P0M0 = 0x94;
  16. sfr P1M1 = 0x91;
  17. sfr P1M0 = 0x92;
  18. sfr P2M1 = 0x95;
  19. sfr P2M0 = 0x96;
  20. sfr P3M1 = 0xb1;
  21. sfr P3M0 = 0xb2;
  22. sfr P4M1 = 0xb3;
  23. sfr P4M0 = 0xb4;
  24. sfr P5M1 = 0xC9;
  25. sfr P5M0 = 0xCA;
  26. sfr P6M1 = 0xCB;
  27. sfr P6M0 = 0xCC;
  28. sfr P7M1 = 0xE1;
  29. sfr P7M0 = 0xE2;

  30. sfr T4T3M   = 0xD1;                 //定時器3和定時器4控制寄存器
  31. sfr T4H     = 0xD2;                 //定時器4高8位
  32. sfr T4L     = 0xD3;                 //定時器4低8位
  33. sfr T3H     = 0xD4;                 //定時器3高8位
  34. sfr T3L     = 0xD5;                 //定時器3低8位

  35. sbit T3     = P0^7;                 //定時器3的外部引腳
  36. sbit T4     = P0^5;                 //定時器4的外部引腳
  37. sbit T3CLKO = P0^6;                 //定時器3的時鐘輸出腳
  38. sbit T4CLKO = P0^4;                 //定時器4的時鐘輸出腳

  39. #define F38_4KHz (65536-FOSC/2/38400)    //1T模式
  40. //#define F38_4KHz (65536-FOSC/2/12/38400) //12T模式

  41. //-----------------------------------------------

  42. void main()
  43. {
  44.     P0M0 = 0x00;
  45.     P0M1 = 0x00;
  46.     P1M0 = 0x00;
  47.     P1M1 = 0x00;
  48.     P2M0 = 0x00;
  49.     P2M1 = 0x00;
  50.     P3M0 = 0x00;
  51.     P3M1 = 0x00;
  52.     P4M0 = 0x00;
  53.     P4M1 = 0x00;
  54.     P5M0 = 0x00;
  55.     P5M1 = 0x00;
  56.     P6M0 = 0x00;
  57.     P6M1 = 0x00;
  58.     P7M0 = 0x00;
  59.     P7M1 = 0x00;

  60.     T4T3M |= 0x20;                  //定時器4為1T模式
  61. //  T4T3M &= ~0x20;                 //定時器4為12T模式

  62.     T4T3M &= ~0x40;                 //T4_C/T=0, 對內(nèi)部時鐘進行時鐘輸出
  63. //  T4T3M |= 0x40;                  //T4_C/T=1, 對T4引腳的外部時鐘進行時鐘輸出

  64.     T4L = F38_4KHz;                 //初始化計時值
  65.     T4H = F38_4KHz >> 8;
  66.    
  67.     T4T3M |= 0x80;                  //定時器4開始計時
  68.     T4T3M |= 0x10;                  //使能定時器4的時鐘輸出功能

  69.     while (1);                      //程序終止
  70. }

復制代碼

  1. /*---------------------------------------------------------------------*/
  2. /* --- STC MCU Limited ------------------------------------------------*/
  3. /* --- STC15F4K60S4 系列 定時器4的16位自動重裝載模式舉例---------------*/

  4. /* 如果要在程序中使用此代碼,請在程序中注明使用了STC的資料及程序        */
  5. /* 如果要在文章中應用此代碼,請在文章中注明使用了STC的資料及程序        */
  6. /*---------------------------------------------------------------------*/

  7. //本示例在Keil開發(fā)環(huán)境下請選擇Intel的8058芯片型號進行編譯
  8. //若無特別說明,工作頻率一般為11.0592MHz


  9. #include "reg51.h"

  10. typedef unsigned char BYTE;
  11. typedef unsigned int WORD;

  12. //-----------------------------------------------

  13. #define FOSC 11059200L

  14. #define T38_4KHz        (256-FOSC/38400/2)          //1T
  15. //#define T38_4KHz      (256-FOSC/12/38400/2)       //12T

  16. sfr P0M1 = 0x93;
  17. sfr P0M0 = 0x94;
  18. sfr P1M1 = 0x91;
  19. sfr P1M0 = 0x92;
  20. sfr P2M1 = 0x95;
  21. sfr P2M0 = 0x96;
  22. sfr P3M1 = 0xb1;
  23. sfr P3M0 = 0xb2;
  24. sfr P4M1 = 0xb3;
  25. sfr P4M0 = 0xb4;
  26. sfr P5M1 = 0xC9;
  27. sfr P5M0 = 0xCA;
  28. sfr P6M1 = 0xCB;
  29. sfr P6M0 = 0xCC;
  30. sfr P7M1 = 0xE1;
  31. sfr P7M0 = 0xE2;

  32. sfr IE2     = 0xAF;                 //中斷使能寄存器2
  33. sfr T4T3M   = 0xD1;                 //定時器3和定時器4控制寄存器
  34. sfr T4H     = 0xD2;                 //定時器4高8位
  35. sfr T4L     = 0xD3;                 //定時器4低8位
  36. sfr T3H     = 0xD4;                 //定時器3高8位
  37. sfr T3L     = 0xD5;                 //定時器3低8位

  38. sbit P10 = P1^0;

  39. //-----------------------------------------------
  40. //中斷服務程序
  41. void t4int() interrupt 20           //中斷入口
  42. {
  43.     P10 = !P10;                     //將測試口取反
  44.       
  45. //  IE2 &= ~0x40;                   //若需要手動清除中斷標志,可先關閉中斷,此時系統(tǒng)會自動清除內(nèi)部的中斷標志
  46. //  IE2 |= 0x40;                    //然后再開中斷即可
  47. }

  48. //-----------------------------------------------

  49. void main()
  50. {
  51.     P0M0 = 0x00;
  52.     P0M1 = 0x00;
  53.     P1M0 = 0x00;
  54.     P1M1 = 0x00;
  55.     P2M0 = 0x00;
  56.     P2M1 = 0x00;
  57.     P3M0 = 0x00;
  58.     P3M1 = 0x00;
  59.     P4M0 = 0x00;
  60.     P4M1 = 0x00;
  61.     P5M0 = 0x00;
  62.     P5M1 = 0x00;
  63.     P6M0 = 0x00;
  64.     P6M1 = 0x00;
  65.     P7M0 = 0x00;
  66.     P7M1 = 0x00;

  67.     T4T3M |= 0x20;                  //定時器4為1T模式
  68. //  T4T3M &= ~0x20;                 //定時器4為12T模式

  69.     T4L = T38_4KHz;                 //初始化計時值
  70.     T4H = T38_4KHz >> 8;
  71.    
  72.     T4T3M |= 0x80;                  //定時器4開始計時
  73.     IE2 |= 0x40;                    //開定時器4中斷
  74.    
  75.     EA = 1;

  76.     while (1);
  77. }

復制代碼
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜精品久久久久久久久久久久久 | 国产人成精品一区二区三 | 亚洲精品视频在线 | 黄色一级大片在线免费看产 | 国产在线www | 美女福利视频一区 | 日韩精品1区2区3区 国产精品国产成人国产三级 | com.色.www在线观看 | 国精品一区 | 狠狠操婷婷 | 伊人网在线看 | 九九天堂网 | 不卡一区二区三区四区 | 国产中文原创 | 亚洲精品视频在线播放 | 91传媒在线观看 | 日本人爽p大片免费看 | 中文字幕免费中文 | 麻豆亚洲 | 91在线精品一区二区 | 91精品国产91久久久久久吃药 | 久久久久亚洲 | 91麻豆产精品久久久久久 | 玖玖爱365 | 亚洲黄色片免费观看 | 天堂一区| 国产欧美精品区一区二区三区 | 亚洲精品一区二区三区四区高清 | 国产欧美一区二区精品久导航 | 久久在线视频 | www.狠狠干| 国产91亚洲精品一区二区三区 | 色综合久| jizz亚洲人| 亚洲va在线va天堂va狼色在线 | 日韩视频在线观看 | 在线视频国产一区 | 福利社午夜影院 | 日日操操 | 亚洲精品在线免费观看视频 | 精品欧美一区二区三区精品久久 |