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

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

QQ登錄

只需一步,快速開始

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

R7F0C802x Easy Start各功能測(cè)試程序+原理圖

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主

用R7F0C802陸陸續(xù)編寫了幾個(gè)程序,小面分享一些經(jīng)驗(yàn),即將會(huì)用到的朋友一些參考。

1.CODE GENERATOR工作原理

         CODE GENERATOR是作為一個(gè)插件導(dǎo)入到CubeSuit+里面的。這個(gè)東西挺好的用的,基本上所有的外設(shè)的寄存器都可以用圖形化配置了,用戶只需要寫自己的應(yīng)用程序即可。它的原理沒有找到,但是在使用過程中發(fā)現(xiàn)它其實(shí)就是由一系列模版組成,當(dāng)你選擇了某個(gè)功能后模版就自動(dòng)加載那條語句,最后再把這個(gè)模版拷貝到用戶工作區(qū)中。這種方法其實(shí)STM32也有,不過瑞薩把 CODE GENERATOR集成到了CubeSuit+里面,使得程序員使用起來還是很方便的。不過CODE GENERATOR生產(chǎn)配置代碼雖然很方便但其隱藏了細(xì)節(jié),對(duì)于我等這種喜歡刨根問底的人來說感覺有點(diǎn)不爽,還是直接配置寄存器來的舒服。

2.瑞薩單片機(jī)按位使用及聲明位置
          在瑞薩單片機(jī)中是可以像51一樣按位來使用引腳的,比如說點(diǎn)燈程序中我們就可以P0.4=1 ;P0.4=0 ;來控制P0.4引腳的輸出電平。特別是對(duì)于寄存器的配置直接寫
PU4 = 0xff
PMC0 =0x00
就行了,但是問題是P0.4, PU4, PMC0 的聲明在哪呢?它們?nèi)绾闻c具體芯片的地址對(duì)應(yīng)呢?我找了一圈沒找到,后來看了瑞薩的官方文檔才知道原來所有的秘密都在#pragma sfr 這句話中,也就是加上這句話就把P0.4, PU4等的聲明全部包含了,個(gè)人猜想瑞薩是把這些申請(qǐng)都包含在了庫(kù)中,通過預(yù)處理來引入這些庫(kù)。以前一直以為歐美的IC庫(kù)封裝都很好,但其至少還要包含一個(gè)頭文件。而瑞薩只需要引入一個(gè)預(yù)編譯命令即可。現(xiàn)在看來一山還比一山高,不得不佩服。





部分測(cè)試代碼:
  1. *******************************************************************************
  2. **  Include files
  3. *******************************************************************************
  4. */
  5. #pragma interrupt INTTM00 interrupt_inttm00
  6. #pragma interrupt INTTM01 interrupt_inttm01
  7. #pragma interrupt INTTM01H interrupt_inttm01h

  8. #include "common.h"

  9. /*
  10. *******************************************************************************
  11. **  Global declaration
  12. *******************************************************************************
  13. */
  14. void main(void);
  15. void IO_Init(void);
  16. void TAU0_PWM_Init(void);
  17. void TAU0_Start(void);
  18. void TAU0_Stop(void);

  19. unsigned long cnt[3];
  20. unsigned short breath;
  21. unsigned char breath_dir;

  22. /*
  23. **---------------------------------------------------------------------
  24. **        Abstract: This function  implements main function.
  25. **        Parameters: None
  26. **        Returns: None
  27. **---------------------------------------------------------------------
  28. */
  29. void main(void)
  30. {        
  31.         unsigned char mode;
  32.         
  33.         cnt[0] = 0;
  34.         cnt[1] = 0;
  35.         cnt[2] = 0;
  36.         
  37.         breath = 0;
  38.         breath_dir = 0;
  39.         
  40.         /* I/O Port Init */
  41.         IO_Init();
  42.         
  43.         /* TAU0 Timer Init */
  44.         TAU0_PWM_Init();
  45.         /* Enable Interrupt */
  46.         EI();
  47.         /* Start Timer, i.e. PWM output */
  48.         TAU0_Start();

  49.         mode = 1;
  50.         /* Program Loop */
  51.         while(1)
  52.         {
  53.                 if (P13.7 == 0)
  54.                 {
  55.                         if (mode)
  56.                         {
  57.                                 mode = 0;
  58.                                 TAU0_Stop();
  59.                         }
  60.                 }
  61.                 else
  62.                 {
  63.                         if (mode == 0)
  64.                         {
  65.                                 mode = 1;
  66.                                 TAU0_Start();
  67.                         }
  68.                 }

  69.         } /* while(1) */
  70. }

  71. /*
  72. **---------------------------------------------------------------------
  73. **        Abstract: This function  implements I/O port initialization.
  74. **        Parameters: None
  75. **        Returns: None
  76. **---------------------------------------------------------------------
  77. */
  78. void IO_Init(void)
  79. {
  80.         /* Port Mode '0'=Out, '1'=In */
  81.         PM0 = 0x01;
  82.         PM4 = 0x00;
  83.         /* Port Register */
  84.         P0 = 0x00;
  85.         P4 = 0x00;
  86.         /* Pull-up resistor */
  87.         PU0 = 0x00;
  88.         PU4 = 0x00;
  89.         PU12 = 0x00;
  90.         /* Port output mode '1'=open-drain */
  91.         POM0 = 0x03;
  92.         /* Port mode control '0'=I/O, '1'=AIN*/
  93.         PMC0 = 0xE1;
  94.         /* Peripheral I/O redirection */
  95.         PIOR = 0x00;
  96. }

  97. /*
  98. **---------------------------------------------------------------------
  99. **        Abstract: This function start the timer.
  100. **        Parameters: None
  101. **        Returns: None
  102. **---------------------------------------------------------------------
  103. */
  104. void TAU0_Start(void)
  105. {
  106.         TMIF00 = 0U;                /* clear INTTM00 interrupt flag */
  107.         TMMK00 = 0U;                /* enable INTTM00 interrupt */
  108.         TMIF01 = 0U;                /* clear INTTM01 interrupt flag */
  109.         TMMK01 = 0U;                /* enable INTTM01 interrupt */
  110.         TOE0 |= 0x03U;                /* enable CH1 output */
  111.         TS0 = 0x03U;                /* Trigger CH0 start */
  112. }

  113. /*
  114. **---------------------------------------------------------------------
  115. **        Abstract: This function stop the timer.
  116. **        Parameters: None
  117. **        Returns: None
  118. **---------------------------------------------------------------------
  119. */
  120. void TAU0_Stop(void)
  121. {
  122.         TT0 |= 0x03;                /* Trigger CH0, CH1 to stop */
  123.         TOE0 &= ~0x02;                /* disable CH1 output */
  124.         TMMK00 = 1U;                /* disable INTTM00 interrupt */
  125.         TMIF00 = 0U;                /* clear INTTM00 interrupt flag */
  126.         TMMK01 = 1U;                /* disable INTTM01 interrupt */
  127.         TMIF01 = 0U;                /* clear INTTM01 interrupt flag */
  128. }

  129. /*
  130. **---------------------------------------------------------------------
  131. **        Abstract        : This function implements timer initialization for PWM output.
  132. **        Parameters        : None
  133. **        Returns                : None
  134. **  Remark                : Set PWM frequency = 1KHz,
  135. **---------------------------------------------------------------------
  136. */
  137. void TAU0_PWM_Init(void)
  138. {
  139.     TAU0EN = 1;                    /* supplies input clock */
  140.     TPS0 = 0x0F;                /* CK01=fclk, CK00=fclk/2^15 */

  141.     /* Stop all channels */
  142.     TT0 = 0x00U;

  143.         /* Mask channel 0 interrupt */
  144.     TMMK00 = 1U;    /* disable INTTM00 interrupt */
  145.     TMIF00 = 0U;    /* clear INTTM00 interrupt flag */
  146.     /* Mask channel 1 interrupt */
  147.     TMMK01 = 1U;    /* disable INTTM01 interrupt */
  148.     TMIF01 = 0U;    /* clear INTTM01 interrupt flag */
  149.     /* Mask channel 1 higher 8 bits interrupt */
  150.     TMMK01H = 1U;    /* disable INTTM01H interrupt */
  151.     TMIF01H = 0U;    /* clear INTTM01H interrupt flag */
  152.     /* Set INTTM00 low priority */
  153.     TMPR100 = 1U;
  154.     TMPR000 = 1U;

  155.     /* Channel 0 is used as master channel for PWM output function */
  156.         TMR00H = 0x80U;                /* CK01 */
  157.         TMR00L = 0x01U;
  158. #if 0
  159.         TDR00H = 0x13U;                /* TDR00 = 4999+1 (0x1387H+1), 1KHz */
  160.         TDR00L = 0x87U;
  161. #else
  162.         TDR00H = 0x1FU;                /* TDR00 = 8191+1 (0x1fffH+1), ~610Hz */
  163.         TDR00L = 0xFFU;
  164. #endif
  165.         TOL0 &= ~0x01;
  166.         TO0 &= ~0x01;
  167.     TOE0 |= ~0x01;
  168.         
  169.     /* Channel 1 is used as slave channel for PWM output function */        
  170.         TMR01H = 0x84U;                /* CK01 */
  171.         TMR01L = 0x09U;
  172. #if 0        
  173.         TDR01H = 0x03U;                /* TDR01 set duty ratio of TDR00 */
  174.         TDR01L = 0xE7U;                /* TDR01 = 999+1 (0x03E7+1), 20% Duty ratio */
  175. #else
  176.         TDR01H = 0x00U;               
  177.         TDR01L = 0x00U;               
  178. #endif
  179.     TOM0 = 0x02U;
  180.     TO0 &= ~0x02;
  181.     TO0 |= 0x02U;
  182.     TOE0 |= 0x02U;        
  183.         TOL0 = 0x02U;

  184.     /* Set TO00, TO01 pin */
  185.     P0 &= 0xE7U;
  186.     PM0 &= 0xE7U;
  187. }


  188. /*
  189. **---------------------------------------------------------------------
  190. **        Abstract: This function implements timer interrupt.
  191. **        Parameters: None
  192. **        Returns: None
  193. **---------------------------------------------------------------------
  194. */
  195. __interrupt void interrupt_inttm00(){
  196.         cnt[0]++;
  197.         if (breath_dir == 0)
  198.         {
  199.                 /* dimm on */
  200.                 if (breath <= 0x1fff)
  201.                 {
  202.                         breath += 0x10;        
  203.                 }
  204.                 else
  205.                 {
  206.                         breath = 0x2000;
  207.                         breath_dir = 1;
  208.                 }
  209.                
  210.         }
  211.         else
  212.         {
  213.                 /* dimm off */
  214.                 if (breath > 0)
  215.                 {
  216.                         breath -= 0x100;        
  217.                 }
  218.                 else
  219.                 {
  220.                         breath = 0;
  221.                         breath_dir = 0;
  222.                 }
  223.         }
  224.         TDR01H = (unsigned char)(breath>>8);               
  225.         TDR01L = (unsigned char)(breath&0x00ff);        
  226. }

  227. /*
  228. **---------------------------------------------------------------------
  229. **        Abstract: This function implements timer interrupt.
  230. **        Parameters: None
  231. **        Returns: None
  232. **---------------------------------------------------------------------
  233. */
  234. __interrupt void interrupt_inttm01(){
  235.         cnt[1]++;
  236. }

  237. /*
  238. **---------------------------------------------------------------------
  239. **        Abstract: This function implements timer interrupt.
  240. **        Parameters: None
  241. **        Returns: None
  242. **---------------------------------------------------------------------
  243. */
  244. __interrupt void interrupt_inttm01h(){
  245.         cnt[2]++;
  246. }
復(fù)制代碼




全部資料下載:

NEC78K0單片機(jī)常用的C語言擴(kuò)展功能20090416.pdf

1.83 MB, 下載次數(shù): 5, 下載積分: 黑幣 -5

R7F0C80212目標(biāo)板原理圖.PDF

204.96 KB, 下載次數(shù): 6, 下載積分: 黑幣 -5

測(cè)試代碼.zip

1.49 MB, 下載次數(shù): 9, 下載積分: 黑幣 -5

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩一区二区三区在线观看 | 亚洲高清视频在线观看 | 午夜免费电影院 | 欧美一区二区三区免费在线观看 | 国产精品免费av | 日韩在线播放一区 | 成人精品视频免费 | 在线观看中文视频 | 成人精品国产免费网站 | 在线观看a视频 | 中文字幕一区二区三区在线观看 | 欧美一区二区三 | 91福利在线观看 | 日本一区二区三区免费观看 | 超碰最新在线 | 91av在线视频观看 | 国产成人精品一区二区三区视频 | 91社区在线观看高清 | 韩日在线 | 久色 | 久久久久久黄 | 色综合久久天天综合网 | 亚洲综合在线一区二区 | 中文字幕在线二区 | 丁香五月网久久综合 | 欧美专区在线 | 91久久精品国产91久久 | 精品精品视频 | 91免费观看国产 | 免费视频一区二区三区在线观看 | 国产亚洲精品区 | 国产91一区二区三区 | 亚洲成av人影片在线观看 | 久久精品亚洲国产奇米99 | 日韩精品一区二区三区免费视频 | 日韩成人av在线 | 久久一区二区免费视频 | 青草青草久热精品视频在线观看 | 亚洲国产视频一区 | 精品一区二区三区四区五区 | av一二三区 |