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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

單片機中斷程序聲明調用是怎么用的呀?

查看數: 2158 | 評論數: 12 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時間: 2023-6-8 23:07

正文摘要:

求大佬幫幫!為了實現設計實現24秒計時器。要求(1)倒計時功能(2)24秒復位鍵功能(3)啟動/暫停鍵功能;proteus仿真圖是這樣子畫的,代碼是下面這樣子寫得,但是仿真一點反應都沒有,代碼編譯說有一段代碼沒有被 ...

回復

ID:1084869 發(fā)表于 2023-6-19 09:55
你需要main函數里面加
IT0 = 1;                    
EX0 = 1;                    
IT1 = 1;                    
EX1 = 1;                    
EA = 1;            
不用在頭文件聲明,這個在單片機聲明那里就有了
ID:116103 發(fā)表于 2023-6-16 16:51
中斷子程序和其他的子程序不同,不用先定義,直接寫在MAIN()后面就行
ID:77589 發(fā)表于 2023-6-16 15:58
大佬不少
ID:1084128 發(fā)表于 2023-6-14 18:46
在單片機中,中斷程序是在中斷事件發(fā)生時自動執(zhí)行的程序。中斷程序在執(zhí)行完成后,會返回到原來的程序繼續(xù)執(zhí)行。這樣可以讓單片機在執(zhí)行一個任務的同時,可以在中斷事件發(fā)生時及時響應事件。  在使用中斷程序時,首先需要在程序中聲明中斷函數,并指定中斷服務程序的編號。例如,在8051單片機中,可以使用關鍵字`interrupt`來聲明中斷函數。如下所示:  ```c void interrupt my_interrupt()  {     // 中斷事件發(fā)生時需要執(zhí)行的代碼 } ```  然后,需要調用一個函數來啟用中斷。在8051單片機中,可以使用`IE`寄存器來開啟中斷。例如,如果需要開啟`Timer 0`的中斷,則可以設置`IE`寄存器中`ET0`位為1。如下所示:  ```c ET0 = 1;  // 開啟Timer 0中斷 ```  當中斷事件發(fā)生時,會自動執(zhí)行中斷函數。執(zhí)行完成后,程序會回到原來的執(zhí)行點繼續(xù)執(zhí)行。
ID:1082650 發(fā)表于 2023-6-14 17:54

感謝感謝。!
ID:213173 發(fā)表于 2023-6-11 21:18
Grealish 發(fā)表于 2023-6-9 14:13
這是老師給的參考代碼抄下來的,我感覺應該是老師敲錯了把,也有一個警告,*** WARNING L16: UNCALLED  ...


  1. #include<reg51.h>

  2. sbit P1_0=P1^0;
  3. sbit P1_1=P1^1;

  4. unsigned char code table []={0x3f, 0x06,0x5b, 0x4f,
  5. 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};
  6. unsigned char time,cnt;
  7. bit key_flag;
  8. void t0_int(void);
  9. void ex_int(void);
  10. void display(unsigned char temp);
  11. void delay (void);

  12. void main(void)
  13. {
  14.         t0_int();
  15.         ex_int();
  16.         while(1)
  17.         {
  18.                 display(time);
  19.         }
  20. }

  21. void delay (void)
  22. {
  23.         unsigned int i;
  24.         for (i=0;i<2000;i++);
  25. }

  26. void display(unsigned char temp)
  27. {
  28.         P2=0x00;
  29.         P1_0=0;
  30.         P1_1=1;
  31.         P2=table[temp/10];
  32.         delay();

  33.         P2=0x00;
  34.         P1_0=1;
  35.         P1_1=0;
  36.         P2=table[temp%10];
  37.         delay();
  38. }

  39. void t0_int(void)
  40. {
  41.         TMOD = 0x01;
  42.         TH0=(65536-50000)/256;
  43.         TL0=(65536-50000)%256;
  44.         TF0 = 0;
  45.         TR0 = 1;
  46. }

  47. void ex_int(void)
  48. {
  49.         ET0 = 1;
  50.         IT0 = 1;
  51.         EX0 = 1;
  52.         EA = 1;
  53. }

  54. void exint0() interrupt 0
  55. {
  56.         key_flag=1;
  57.         time=24;
  58. }

  59. void Timer0Interrupt(void) interrupt 1
  60. {
  61.         TH0=(65536-50000)/256;
  62.         TL0=(65536-50000)%256;
  63.         if(key_flag)
  64.         {
  65.                 if(++cnt==20)
  66.                 {
  67.                         cnt=0;
  68.                         time--;
  69.                         if(time==0)key_flag=0;
  70.                 }
  71.         }
  72. }
復制代碼



ID:712097 發(fā)表于 2023-6-11 15:27
main函數中加入以下語句
IT0 = 1;                    //設置INT0的中斷類型為僅下降沿,下降沿喚醒
EX0 = 1;                    //使能INT0中斷
IT1 = 1;                    //設置INT0的中斷類型為僅下降沿,下降沿喚醒
EX1 = 1;                    //使能INT0中斷
EA = 1;                     //開總中斷

原main函數中的這兩句刪除
t0_ini();
ex_ini();

t0_ini和ex_ini這兩個中斷函數放到main函數前面。

中斷函數無法通過其它函數調用。
當外部中斷觸發(fā)后,中斷正在執(zhí)行的語句,自動執(zhí)行中斷函數中的語句。執(zhí)行完成后返回之前中斷的語句繼續(xù)執(zhí)行。
ID:1082650 發(fā)表于 2023-6-9 14:13
Hephaestus 發(fā)表于 2023-6-9 13:36
這兩個函數是硬件中斷調用的,你放到main()里面幾個意思?
  1. #include<reg51.h>
  2. unsigned char code table []={0x3f, 0x06,0x5b, 0x4f,
  3. 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};
  4. sbit start_stop =P3^2;
  5. sbit P1_0=P1^0;
  6. sbit P1_1=P1^1;
  7. unsigned char time,cnt;
  8. bit key_flag;
  9. void delay (void)
  10. {
  11. unsigned int i;
  12. for (i=0;i<2000;i++);
  13. }
  14. void display(unsigned char temp)
  15. {
  16.                         unsigned char shi,ge;
  17.                         shi=temp/10;
  18.                         ge=temp%10;
  19.                         P1&=0xf0;
  20.                         P2=table[shi];
  21.                         P1_0=1;
  22.                         delay();
  23.                         P1&=0xf0;
  24.                         P2=table[ge];
  25.                         P1_1=1;
  26.                         delay();
  27.                         P2=0;
  28.                         P1&=0xf0;
  29. }
  30. t0_ini(){}
  31. ex_ini(){}
  32. void main(void)
  33. {
  34.                 t0_ini();
  35.                 ex_ini();
  36.                 while(1);
  37.                 {
  38.                                 display(time);
  39.                 }
  40. }
  41. ex0_int() interrupt 0
  42. {
  43.   key_flag=!key_flag;
  44.   if(key_flag) TR0=1;
  45.   else TR0=0;
  46.   }
  47. ex1_int() interrupt 2
  48. {
  49.                 time=24;
  50. }

  51. t0_int() interrupt 1
  52. {
  53.                         TH0=(65536-50000)/256;
  54.                         TL0=(65536-50000)%256;
  55.                         cnt++;
  56.                         if(cnt==20)
  57.                         {
  58.                         cnt =0;
  59.                         time--;
  60.                         if(time==0)         time=24;
  61.                         }
  62. }
復制代碼

這是老師給的參考代碼抄下來的,我感覺應該是老師敲錯了把,也有一個警告,*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
所以改了一下,或者是不是我電路連錯了
ID:404160 發(fā)表于 2023-6-9 13:46
Hephaestus 發(fā)表于 2023-6-9 13:36
這兩個函數是硬件中斷調用的,你放到main()里面幾個意思?

另外,沒有對中斷,定時器進行初始化。
ID:883242 發(fā)表于 2023-6-9 13:36
Grealish 發(fā)表于 2023-6-9 13:31
TEXT1.C(35): warning C206: 'ex_int': missing function-prototype就只刪掉這兩行報錯了又

這兩個函數是硬件中斷調用的,你放到main()里面幾個意思?
  1.                 t0_int();
  2.                 ex_int();
復制代碼
ID:1082650 發(fā)表于 2023-6-9 13:31

TEXT1.C(35): warning C206: 'ex_int': missing function-prototype就只刪掉這兩行報錯了又
ID:883242 發(fā)表于 2023-6-9 11:43
這兩行刪掉!
  1. void t0_int(void){}
  2. void ex_int(void){}
復制代碼

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲成人精品 | 亚洲成人免费在线 | 久草欧美视频 | 一区二区三区国产好 | 毛片a区 | 精品国产乱码久久久久久闺蜜 | 一区二区三区欧美在线 | 久久久久国产精品免费免费搜索 | 伊人久久综合 | 国产精品久久久久久吹潮日韩动画 | 九九热在线精品视频 | 瑟瑟免费视频 | 国产精品久久久久久久午夜片 | 久久国产精品亚洲 | 日韩欧美国产精品一区二区 | av特级毛片 | 亚洲欧美成人影院 | 亚洲综合五月天婷婷 | 中文字幕日韩欧美一区二区三区 | 男人的天堂久久 | 99久久久久 | 五月婷婷 六月丁香 | 成人欧美一区二区三区黑人孕妇 | 激情av在线| 国产美女一区二区三区 | 国产一级在线 | 欧美精品一区二区三区蜜桃视频 | 男女爱爱网站 | 亚洲五码久久 | 欧美日韩在线视频观看 | 亚洲资源站| 欧美成人黄色小说 | 精品永久 | 久久久在线视频 | 国产精品色 | 一本大道久久a久久精二百 欧洲一区二区三区 | 一区二区亚洲 | 精品一区精品二区 | 中文字幕精品一区 | 精品国偷自产在线 | av一区二区三区四区 |