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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10485|回復: 21
打印 上一主題 下一主題
收起左側

STC15W204S 8腳封裝的單片機,2個定時器測試代碼,我太難啦

  [復制鏈接]
跳轉到指定樓層
樓主
ID:475031 發表于 2020-2-27 20:07 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
STC15W204S 8腳封裝的單片機,2個定時器測試代碼,這個資料太少了,我也東拼西湊組合起來才弄明白,我太喜歡這個小單片機。,麻雀雖小五臟俱全,一些小功能,就不需要搞什么89C51了,直接它可以搞定。
至于需要大功能動作多復雜的的,可以用一個89C51做主控芯片。,外圍加若干STC15W204S芯片來搭配,
功能強大。不輸于STM32哦
電路簡潔,代碼也簡單。適合新手初學者。



單片機源程序如下:

  1. //=========================================================
  2. //1. 晶振為11.0592M,每計數一次用時12/11.0592M=1.085us
  3. //2. TMOD取0x10,即模式1——16位計數器(0~65535)
  4. //3. 計時2ms,1ms=921.5,則2ms/1.085us=1843,故TH1=(65536-1843)/256,TL1=(65536-1843)%256
  5. //65536微秒(μs)=最大定時65.536毫秒(ms)
  6. //12MHZ的51單片機,定時器最大只能定時65.535ms,所以要定時500ms的時間,
  7. //需要產生10次50ms的定時。
  8. //步驟如下:
  9. //1、每隔50ms定時器中斷溢出,計數+1。
  10. //2、當計數達到10次時,便產生了500ms的定時啦,然后,你自己根據你的設計,需要讓單片機做什么就自己寫些什么(比如讓某個io口取反)
  11. //3、計數達到10次后,不要忘了初始化計數。
  12. //最后給點建議:1、要讓定時器計數50ms,只能在定時器的工作方式1下進行;
  13. //2、定時器初值: TH0 = 0x3C; TL0 = 0x0B0;(我使用的是定時器0)
  14. //定時1ms,0xfc18 == 64536
  15. //=========================================================

  16. /************1s 定時器+中斷控制led翻轉 ***********/
  17. #include<STC15W.h>
  18. //#include "reg51.h"
  19. //#include "reg52.h"
  20. //#ifndef __STC15F2K60S2_H_
  21. //#define __STC15F2K60S2_H_
  22. #include <intrins.h>
  23. typedef unsigned int u16;
  24. typedef unsigned char u8;
  25. #define uchar unsigned char
  26. #define uint unsigned int

  27. sbit led = P3^0;
  28. sbit led2 = P3^3;




  29. void timer_init()
  30.         {
  31.     //設置定時器的初始計數值
  32.     //計算方法
  33.     //假設定時器為1ms,一個機器周期為 1/單片機的晶振頻率  即: 1/12M = 1us
  34.     //而1個機器周期 = 12個時鐘周期 所以: n x 機器周期 = 1ms ===> n x 1us = 1ms
  35.     //所以n = 1000,也就是經過1000個機器周期,定時器要溢出(從0開始計數)
  36.     //所以定時器的初始值為65535 - 1000 + 1 = 64536 ===> 0xFC18,拆分成TH0 = 0xFC; TL0 = 0x18;
  37.                 TMOD |= 0x01;  //TMOD |= 0x01;等價于TMOD = TMOD | 0x01; // 將TMOD的最低位置1,
  38.                                //也即表示將定時/計數器的其工作方式調整為方式1(16位定時器/計數器)。
  39.                                //0x00方式0 13位計數器
  40.                                                                         //0x01方式1 16位計數器
  41.                                                                         //0x10方式2 自動重裝8位計數器
  42.                                                                         //0x11方式3 T0分為2個8位獨立計數器,T1為無中斷重裝8位計數器
  43. //                &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
  44.                                                                         //程序運行中TMOD |=0x01不會改變其它位的狀態,
  45.                                                                         //TMOD =0x01會改變其它位的狀態。
  46.                                                                         //比如,原先TMOD = 0x10(二進制數00010000的第4位置1),
  47.                                                                         //程序運行中為了讓TMOD的最低位也置1,但又不改變第4位的狀態,
  48.                                                                         //那么,使用TMOD |=0x01,這樣TMOD 變成 0x11,
  49.                                                                         //即保留了第4位的狀態,如果使用TMOD =0x01第4位的狀態就被覆蓋了。
  50.     TH0 = (65536-1843)/256;   //12M晶振1ms這樣TH0 = 0xFC; TL0 = 0x18; 11.0592M晶振1ms這樣TH0 = (65536-1843)/256;
  51.     TL0 = (65536-1843)%256;   //12M晶振1ms這樣TH0 = 0xFC; TL0 = 0x18; 11.0592M晶振1ms這樣(TL0 =65536-1843)%256;
  52.                 ET0 = 1; //T0中斷   
  53.     TR0 = 1;//啟動T0定時器
  54.     EA = 1;  //總中斷開關
  55. }
  56.         

  57. void timer2_init()
  58.         {
  59. TMOD |= 0x01;  //TMOD |= 0x01;等價于TMOD = TMOD | 0x01; // 將TMOD的最低位置1,
  60.         AUXR |= 0x04;                //定時器時鐘1T模式
  61.         T2L = 0xF5;                //設置定時初值
  62.         T2H = 0xFF;                //設置定時初值
  63.         IE2 |= 0x04;  //開定時器2中斷
  64.         AUXR |= 0x10;                //定時器2開始計時
  65. EA = 1;  //總中斷開
  66. }









  67. void main(){
  68.     timer_init();
  69.           timer2_init();
  70.     while(1);
  71. }

  72. void trigger_timer0() interrupt 1 //定時器中斷0;
  73.         
  74. {
  75.     static u16 i = 0;
  76.     TH0 = (65536-1843)/256;
  77.     TL0 = (65536-1843)%256;
  78.     i++;//計數
  79.     if( i == 500 ) //這里1000ms=1秒
  80.                         {
  81.         i = 0;//計數清零
  82.         led = ~led;//時間到 LED翻轉,形成閃爍
  83.     }
  84. }


  85. void trigger_timer2() interrupt 12 //定時器中斷2;
  86.         
  87. {
  88.     static u16 v = 0;
  89.         T2L = 0xF5;                //設置定時初值
  90.         T2H = 0xFF;                //設置定時初值
  91.     v++;//計數
  92.     if( v == 500 ) //這里1000ms=1秒
  93.                         {
  94.         led2 = ~led2;//時間到 LED翻轉,形成閃爍
  95.     }
  96. }



復制代碼



STC15W204S單片機原理圖.jpg (728.47 KB, 下載次數: 148)

STC15W204S單片機原理圖.jpg

STC15W204S-8腳單片機.jpg (153.84 KB, 下載次數: 138)

STC15W204S-8腳單片機.jpg

STC15W204S尺寸圖.JPG (69.95 KB, 下載次數: 121)

STC15W204S尺寸圖.JPG

IMG_20200227_200221(1).jpg (1.05 MB, 下載次數: 122)

IMG_20200227_200221(1).jpg

IMG_20200227_200123.jpg (873 KB, 下載次數: 112)

IMG_20200227_200123.jpg

IMG_20200227_200107.jpg (682.33 KB, 下載次數: 121)

IMG_20200227_200107.jpg

評分

參與人數 2黑幣 +62 收起 理由
STC莊偉 + 12
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:475031 發表于 2020-2-27 20:10 | 只看該作者
STC15W204S兩個定時器測試
忘記上傳完整代碼了,這傳上
STC15W204S兩個定時器測試.rar (34.72 KB, 下載次數: 148)


回復

使用道具 舉報

板凳
ID:475031 發表于 2020-2-27 20:20 | 只看該作者

回復

使用道具 舉報

地板
ID:535242 發表于 2020-2-27 21:19 | 只看該作者
過來支持一下
回復

使用道具 舉報

5#
ID:693716 發表于 2020-2-27 21:43 | 只看該作者
我的簡介相同,這個小芯片確實不錯,而且除了IO資源少了點外,運行速度比89C51快的多,如果擴展IO,可用74HC595
回復

使用道具 舉報

6#
ID:87000 發表于 2020-2-27 22:18 | 只看該作者
性價比不如STM32F0系列
回復

使用道具 舉報

7#
ID:72649 發表于 2021-10-7 08:06 | 只看該作者
能不能做個能調用任意參數的延時程序?
回復

使用道具 舉報

8#
ID:255559 發表于 2021-12-2 09:45 | 只看該作者
好帖子,講的非常細,支持一下
回復

使用道具 舉報

9#
ID:983947 發表于 2021-12-3 13:14 | 只看該作者
這種小芯片的實用價值很高,很多地方都可以用得上,成本也低!
回復

使用道具 舉報

10#
ID:63317 發表于 2022-7-13 05:49 | 只看該作者
講的非常細,支持一下
回復

使用道具 舉報

11#
ID:496636 發表于 2022-7-13 19:02 | 只看該作者
hj08102 發表于 2020-2-27 21:43
我的簡介相同,這個小芯片確實不錯,而且除了IO資源少了點外,運行速度比89C51快的多,如果擴展IO,可用74HC ...

74HC595這個移位寄存器如果只是用在顯示上,是可以用的,如果用在開關量輸出上,安全性要求高,就不能用,如果數據傳輸過程過程中出點差錯,就會導致輸出錯誤,而數據傳輸沒有較驗,就是大的弱點。如輸出驅動閥門的開關,如果某個閥門開錯了,那是要發生生產事故的。
回復

使用道具 舉報

12#
ID:1051955 發表于 2022-11-14 18:45 | 只看該作者
說的很祥細,好理解,受教了
回復

使用道具 舉報

13#
ID:97678 發表于 2022-11-15 09:17 | 只看該作者
可以寫一個ADC采集程序嗎?
回復

使用道具 舉報

14#
ID:919912 發表于 2022-11-25 13:55 | 只看該作者
鬼推磨 發表于 2020-2-27 20:10
STC15W204S兩個定時器測試
忘記上傳完整代碼了,這傳上

非常棒
回復

使用道具 舉報

15#
ID:632514 發表于 2022-11-25 23:16 | 只看該作者
鬼推磨 發表于 2020-2-27 20:10
STC15W204S兩個定時器測試
忘記上傳完整代碼了,這傳上

樓主你這代碼用keil編譯不通過報錯怎么回事?
回復

使用道具 舉報

16#
ID:1087674 發表于 2023-7-7 23:02 來自手機 | 只看該作者
請問樓主,我要是延時350毫秒,怎么寫呢?這個單時鐘的不懂
回復

使用道具 舉報

17#
ID:272119 發表于 2023-7-8 08:54 | 只看該作者
好久沒有用STC 做案子了,最近和之后一段時間我做小案子基本會用CH32V003,這貨價格低的離譜但IO和性能都很不錯.
回復

使用道具 舉報

18#
ID:1053359 發表于 2023-7-10 10:38 | 只看該作者
支持你,,,單片機開發有你更精彩
回復

使用道具 舉報

19#
ID:1087927 發表于 2023-7-10 11:00 | 只看該作者
qq603599910 發表于 2023-7-8 08:54
好久沒有用STC 做案子了,最近和之后一段時間我做小案子基本會用CH32V003,這貨價格低的離譜但IO和性能都很不 ...

X寶搜下,果然。
你引起我好奇心了。搞幾片玩下。
回復

使用道具 舉報

20#
ID:464755 發表于 2023-7-10 18:34 | 只看該作者
qq603599910 發表于 2023-7-8 08:54
好久沒有用STC 做案子了,最近和之后一段時間我做小案子基本會用CH32V003,這貨價格低的離譜但IO和性能都很不 ...

開發環境不錯,比KEIL強多了,就是要裝晶振,也不方便,我還是喜歡內置的,測試最好是DIP的,我現在用8G1K08比較多,DIP8 DIP16的都有,裝個插座,好焊好換。
回復

使用道具 舉報

21#
ID:712097 發表于 2023-8-5 11:41 | 只看該作者
jovew 發表于 2022-11-15 09:17
可以寫一個ADC采集程序嗎?

這款芯片不支持ADC,型號后帶A的才支持ADC,例如STC8G1K08A
回復

使用道具 舉報

22#
ID:910171 發表于 2025-1-31 19:10 | 只看該作者
你這個定時器初值設置好像有點問題吧?恰巧我也在看STC15W204S單片機的資料,因為我打算用它diy一個電路。
STC15W204S是個1T的單片機,使用內部高精度RC時鐘,時鐘頻率在5M到35M之間可選擇,選擇的方法是在燒錄的時候在STC-ISP燒錄軟件里面選擇。
并且, STC15W204S的系統時鐘跟主時鐘的關系,要用特殊功能寄存器CLK_DIV進行設定,默認情況下,它是一個1T的單片機,就是一個機器周期就等于一個時鐘周期。你那個寄存器的算法,硬套12T單片機的算法,恐怕沒法實現正確的定時。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美网址在线观看 | 久久久影院 | 亚洲欧洲小视频 | 日韩三级 | 久久99精品久久久久久青青日本 | 美女福利视频 | 在线精品一区二区三区 | 午夜免费观看 | 蜜桃av一区二区三区 | 午夜免费电影院 | 久久av资源网 | 天天狠狠 | 日本免费在线看 | av天天干 | 久草色播| 久久久精品影院 | 中文字幕成人在线 | 日日摸日日爽 | 欧美日韩网站 | 亚洲欧美国产精品一区二区 | 日韩av在线免费 | 国产精品一区二区电影 | 国产欧美精品区一区二区三区 | 欧美区日韩区 | 正在播放一区二区 | 91影院| 国内精品视频一区二区三区 | 成人影院在线观看 | 中文字幕日韩专区 | 亚洲欧美中文字幕在线观看 | www国产亚洲精品久久网站 | 精品久久99| 一区二区三区免费在线观看 | 成人欧美一区二区 | 亚洲精品3| 日韩精品一区二区久久 | 国产精品黄| 精品日韩一区 | 亚洲一区二区三区福利 | 日本不卡一二三 | 国产日韩一区二区 |