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

標題: stc8單片機功能腳切換寄存器這一位EAXFR是干什么的? [打印本頁]

作者: 15072306167    時間: 2020-7-16 16:42
標題: stc8單片機功能腳切換寄存器這一位EAXFR是干什么的?
寄存器這一位 EAXFR 是干什么的

下載.png (75.08 KB, 下載次數: 109)

下載.png

作者: angmall    時間: 2020-7-16 22:07
P_SW2寄存器的最高位EAXFR 是擴展SFR訪問控制使能
如下特殊功能寄存器位于擴展 RAM 區域 訪問這些寄存器,需先將 P_SW2 的 BIT7(EAXFR) 設置為 1,才可正常讀寫





  1. #include "reg51.h"
  2. #include "intrins.h"

  3. //測試工作頻率為11.0592MHz

  4. sfr     P_SW2       =   0xba;
  5. sfr     PWMCFG      =   0xf1;
  6. sfr     PWMIF       =   0xf6;
  7. sfr     PWMFDCR     =   0xf7;
  8. sfr     PWMCR       =   0xfe;

  9. #define PWMC            (*(unsigned int volatile xdata *)0xfff0)
  10. #define PWMCKS          (*(unsigned char volatile xdata *)0xfff2)
  11. #define TADCP           (*(unsigned int volatile xdata *)0xfff3)
  12. #define PWM0T1          (*(unsigned int volatile xdata *)0xff00)
  13. #define PWM0T2          (*(unsigned int volatile xdata *)0xff02)
  14. #define PWM0CR          (*(unsigned char volatile xdata *)0xff04)
  15. #define PWM0HLD         (*(unsigned char volatile xdata *)0xff05)
  16. #define PWM1T1          (*(unsigned int volatile xdata *)0xff10)
  17. #define PWM1T2          (*(unsigned int volatile xdata *)0xff12)
  18. #define PWM1CR          (*(unsigned char volatile xdata *)0xff14)
  19. #define PWM1HLD         (*(unsigned char volatile xdata *)0xff15)
  20. #define PWM2T1          (*(unsigned int volatile xdata *)0xff20)
  21. #define PWM2T2          (*(unsigned int volatile xdata *)0xff22)
  22. #define PWM2CR          (*(unsigned char volatile xdata *)0xff24)
  23. #define PWM2HLD         (*(unsigned char volatile xdata *)0xff25)
  24. #define PWM3T1          (*(unsigned int volatile xdata *)0xff30)
  25. #define PWM3T2          (*(unsigned int volatile xdata *)0xff32)
  26. #define PWM3CR          (*(unsigned char volatile xdata *)0xff34)
  27. #define PWM3HLD         (*(unsigned char volatile xdata *)0xff35)
  28. #define PWM4T1          (*(unsigned int volatile xdata *)0xff40)
  29. #define PWM4T2          (*(unsigned int volatile xdata *)0xff42)
  30. #define PWM4CR          (*(unsigned char volatile xdata *)0xff44)
  31. #define PWM4HLD         (*(unsigned char volatile xdata *)0xff45)
  32. #define PWM5T1          (*(unsigned int volatile xdata *)0xff50)
  33. #define PWM5T2          (*(unsigned int volatile xdata *)0xff52)
  34. #define PWM5CR          (*(unsigned char volatile xdata *)0xff54)
  35. #define PWM5HLD         (*(unsigned char volatile xdata *)0xff55)
  36. #define PWM6T1          (*(unsigned int volatile xdata *)0xff60)
  37. #define PWM6T2          (*(unsigned int volatile xdata *)0xff62)
  38. #define PWM6CR          (*(unsigned char volatile xdata *)0xff64)
  39. #define PWM6HLD         (*(unsigned char volatile xdata *)0xff65)
  40. #define PWM7T1          (*(unsigned int volatile xdata *)0xff70)
  41. #define PWM7T2          (*(unsigned int volatile xdata *)0xff72)
  42. #define PWM7CR          (*(unsigned char volatile xdata *)0xff74)
  43. #define PWM7HLD         (*(unsigned char volatile xdata *)0xff75)

  44. void main()
  45. {
  46.     P_SW2 = 0x80;  //將P_SW2寄存器的最高位EAXFR置1,訪問XSFR
  47.     PWMCKS = 0x00;                              // PWM時鐘為系統時鐘
  48.     PWMC = 0x1000;                              //設置PWM周期為1000H個PWM時鐘
  49.     PWM0T1= 0x0100;                             //在計數值為100H地方輸出低電平
  50.     PWM0T2= 0x0500;                             //在計數值為500H地方輸出高電平
  51.     PWM0CR= 0x80;                               //使能PWM0輸出
  52.     P_SW2 = 0x00;

  53.     PWMCR = 0x80;                               //啟動PWM模塊

  54.     while (1);
  55. }

復制代碼





作者: 權威人物    時間: 2020-7-17 09:33
你認真看下這個表的下面文檔,你會發現驚喜,
作者: 15072306167    時間: 2020-7-17 10:35
謝了,昨天看了后面才發現
作者: 15072306167    時間: 2020-7-17 10:39
angmall 發表于 2020-7-16 22:07
P_SW2寄存器的最高位EAXFR 是擴展SFR訪問控制使能
如下特殊功能寄存器位于擴展 RAM 區域 訪問這些寄存器, ...

謝謝,昨天看了后面才發現
作者: 小胸姑娘    時間: 2021-3-13 10:55
這個操作
一言難盡!
我看IIC的時候剛好把這個漏過去了,結果硬件IIC怎么也通訊不成功,看了芯片資料給的例程后發現P_SW2的第一位被置一了,然后再過來查。前前后后搞了好久好久
作者: Lric_liao    時間: 2021-9-4 00:50
小胸姑娘 發表于 2021-3-13 10:55
這個操作
一言難盡!
我看IIC的時候剛好把這個漏過去了,結果硬件IIC怎么也通訊不成功,看了芯片資料給的 ...

對,我也是這里,卡了好幾天
作者: innere    時間: 2023-5-15 16:38
他沒有講這位置1后,耽誤訪問data里的內容不
作者: hzsweet    時間: 2023-5-15 21:57
我也是沒注意到,搞了好久
作者: angmall    時間: 2023-5-16 08:39
innere 發表于 2023-5-15 16:38
他沒有講這位置1后,耽誤訪問data里的內容不

8.2.8 擴展SFR 使能寄存器EAXFR 的使用說明
STC8G/8H 的擴展SFR 地址范圍為0FA00H~0FFFFH,如需訪問XFR 區域的擴展SFR,需要先將EAXFR
(P_SW2.7)置1,并使用MOVX A,@DPTR 和MOVX @DPTR,A 這兩條指令進行讀寫操作。XFR 的地址范
圍與外部擴展RAM 地址的0FA00H~0FFFFH 區域是重疊的。
1、若用戶不使用外部擴展RAM 或者外部擴展RAM 的最大地址不超過0FA00H
(例如只外擴32K RAM),這種情況下不會有不同區域的訪問地址沖突,可以在上電系統初始化時將EAXFR
寄存器設置為1(例如:P_SW2 |= 0x80;),后續一直保持為1 不用再修改,
即可正常訪問XFR 區域。
2、若用戶有外擴64K 的擴展RAM,則在訪問XFR 和外部擴展RAM 時需要注意:
訪問XFR 時需要將EAXFR 寄存器位設置為1;
訪問地址范圍在0FA00H~0FFFFH 的外部擴展RAM 時需要將EAXFR 設置為0;
訪問地址范圍在0000H~0F9FFH 的外部擴展RAM 時,與EAXFR 設置的值無關







作者: wufa1986    時間: 2023-5-16 11:52
搞的太復雜了,這就是51架構的局限性
作者: coody_sz    時間: 2023-5-16 12:18
用于訪問擴展的特殊功能寄存器,因為51的架構問題,常規的特殊功能寄存器地址(128字節)遠遠不夠,所以STC增加的幾百個特殊功能寄存器都放在xdata地址空間,為了避免與xdata內存沖突,所以用這一位來允許/禁止擴展的特殊功能寄存器訪問。
如果沒有外接xdata芯片,或外接的沒到64K,或者到64K,最后幾百個字節不用,則程序已開始設置該位為1,一直不用清除。
作者: lgwd    時間: 2025-1-23 21:28
STC為了發展51芯片擴展了很多東西!又必須考慮兼容過去和能夠在Keil中編程和調試,有些設置就好像是“打補丁”。其實STC的手冊很長,也敘述的很清楚。只是許多人缺少認真看書的習慣!
作者: coody_sz    時間: 2025-1-24 11:01
允許訪問擴展在XDATA區的SFR(特殊功能寄存器)。51架構直接訪問的寄存器只有128字節,而STC公司的MCU外設擴展了幾百個寄存器,只好放在XDATA區。




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产天堂av| 午夜视频免费看 | 午夜影院在线免费观看 | 日日干夜夜干 | 欧美激情第二页 | 成人黄色在线 | a级片免费| 这里只有精品视频在线观看 | 亚洲国产精品va在线看黑人 | 久久av一区二区 | 成年人视频在线播放 | 国产精品久免费的黄网站 | 99色在线 | 久久99九九| 狠狠撸狠狠干 | 国产精品成人国产乱一区 | 色香蕉网| 国产精品久久久999 成人在线国产 | 黄色激情视频在线观看 | 色综合五月 | 草草在线观看 | 日韩欧美在线视频观看 | 亚洲欧洲综合 | 成人一区二区在线 | 日韩中文字幕视频 | 国产成人在线观看免费网站 | 国产传媒视频在线观看 | 欧美性猛交xxxx黑人猛交 | av在线天堂 | 国模无码大尺度一区二区三区 | 999毛片| 一区二区三区高清 | 亚洲天堂av网 | 国产视频一二三 | 免费福利片 | 一区二区三区视频 | 中文字幕av网 | 久久网页| 久久视频在线 | 成人91视频 | 日韩精品视频免费 |