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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1821|回復(fù): 0
收起左側(cè)

如何根據(jù)《Keyer自動鍵控制單片機(jī)程序》反推出電路原理圖 求幫助

[復(fù)制鏈接]
ID:573727 發(fā)表于 2019-6-29 13:50 | 顯示全部樓層 |閱讀模式
  1. /*******************************************************************************
  2. 程序名稱:Keyer 自動鍵控制程序
  3. *******************************************************************************/
  4. #include <STC89C5xRC.H>
  5. #include <intrins.h>
  6. #include <stdlib.h>
  7. #include <config.h>
  8. /* 定義IO端口宏 */
  9. #define GPIO_DIG P0 //定義數(shù)碼管IO
  10. #define GPIO_KEY P1 //定義鍵盤IO
  11. /* 定義數(shù)碼管 */
  12. sbit LSA = P2^2;
  13. sbit LSB = P2^3;
  14. sbit LSC = P2^4;
  15. /* 定義IO端口 */
  16. sbit BEEP  = P1^5; //定義蜂鳴器
  17. sbit CWOUT = P2^0; //定義電鍵信號發(fā)送端口與LED
  18. sbit K1 = P3^0;  //定義K1鍵為功能鍵
  19. sbit K2 = P3^1;  //定義K2鍵為播放鍵
  20. sbit K3 = P3^2;  //定義Dot鍵使用外部中斷INT0
  21. sbit K4 = P3^3;  //定義Dash鍵使用外部中斷INT1
  22. /* 聲明功能函數(shù) */
  23. void IntConfiguration(void);  //中斷配置
  24. void Delay(uint t);     //延時(shí)(t=毫秒數(shù))
  25. void TimeCount(void);    //計(jì)算Dot/Dash時(shí)長
  26. void Paddle(void);     //自控電碼發(fā)生
  27. void Straight(void);    //手控電碼發(fā)生
  28. void Space(uchar n);    //間隔發(fā)生器(n=間隔數(shù)目)
  29. void Function(void);    //功能鍵控制
  30. void PlayCall(void);    //發(fā)送本臺呼號
  31. void Display(void);     //數(shù)碼管顯示
  32. void RecordInfor(void);    //錄入本臺呼號
  33. void WriteSystem(void);    //寫入系統(tǒng)參數(shù)
  34. void Player(uchar m, uchar x[]); //發(fā)送內(nèi)置信息(m=發(fā)送字符數(shù))
  35. /* 聲明ISP操作函數(shù) */
  36. void EEPROM_Read(uint EE_address, uchar *DataAddress, uchar n);  //字節(jié)讀
  37. void EEPROM_Write(uint EE_address, uchar *DataAddress, uchar n); //字節(jié)寫
  38. void EEPROM_SectorErase(uint EE_address);       //扇區(qū)擦除
  39. /* 數(shù)碼管顯示碼表,0 1 2 3 4 5 6 7 8 9 */
  40. const uchar code DIG_CODE[10] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};
  41. /* 側(cè)音頻率表,400,500,600,700,800,900,1000Hz */
  42. const uchar code Tone_H[7] = {0xFB, 0xFC, 0xFC, 0xFD, 0xFD, 0xFD, 0xFE};   
  43. const uchar code Tone_L[7] = {0x1E, 0x18, 0xBF, 0x36, 0x8F, 0xD4, 0x0C};
  44. /* 呼叫數(shù)組 */
  45. const uchar code C1[10] = {'1','0','1','0','.','1','1','0','1',' '};
  46. const uchar code C2[6]  = {'1','0','0','.','0',' '};
  47. const uchar code C3[14] = {'0','1','1','0','.','0','0','0','.','0',' ','1','0','1'};
  48. /* 定義變量 */
  49. uint DotTime, DashTime;  //Dot時(shí)長,Dash時(shí)長
  50. uint TCount, Tmax;   //時(shí)長計(jì)數(shù),時(shí)長閾值
  51. uchar KeyValue;    //功能鍵值
  52. uchar Cmax = 54, CW_x[56]; //數(shù)組上標(biāo),錄入緩存
  53. uchar WPM = 16;    //發(fā)報(bào)速度4-60wpm (默認(rèn)16wpm)
  54. uchar ToneFreq = 3;   //側(cè)音頻率序號0-6 (默認(rèn)3/700Hz)
  55. uchar Number;    //播發(fā)字符數(shù)
  56. bit KeyFlg  = 1;   //點(diǎn)劃交替標(biāo)志(1=無點(diǎn)劃交替)
  57. bit SendFlg = 0;   //發(fā)送標(biāo)志(1=禁止發(fā)射)
  58. static uint T2Count = 0; //定時(shí)器T2計(jì)數(shù)變量
  59. void main(void)
  60. {
  61. /* 設(shè)定初始值 */
  62. IntConfiguration(); //配置中斷
  63. if (K1 == 0)  //按K1鍵開機(jī)進(jìn)行系統(tǒng)重置
  64. {
  65.   WPM = 16;
  66.   ToneFreq = 3;
  67.   Number = 0;
  68.   WriteSystem();
  69.   EEPROM_SectorErase(SectorAddr_2);
  70. }
  71. else
  72. {
  73.   EEPROM_Read(SectorAddr_1, CW_x, 3); //讀系統(tǒng)設(shè)定參數(shù)
  74.   if (CW_x[0] != 0xFF)
  75.   {
  76.    WPM = CW_x[0];
  77.    ToneFreq = CW_x[1];
  78.    Number = CW_x[2];
  79.   }
  80. }
  81. TimeCount();   //計(jì)算Dot/Dash時(shí)長
  82. TH1 = Tone_H[ToneFreq]; //設(shè)定定時(shí)器T1(側(cè)音頻率)初始值
  83.     TL1 = Tone_L[ToneFreq];
  84. TR2 = 1;    //開定時(shí)器T2
  85. /* 運(yùn)行按鍵監(jiān)測程序 */
  86. while (1)
  87. {
  88.   SendFlg = 0; //允許發(fā)射
  89.   Display();
  90.   Delay(15);
  91.   if (K1 == 0) //功能鍵按下
  92.   {
  93.    Delay(1000);
  94.    if (K1 == 0)
  95.     Function();
  96.   }
  97.   if (K2 == 0 && Number > 0)
  98.    PlayCall();
  99. }
  100. }
  101. /*******************************************************************************
  102. 函 數(shù) 名:IntConfiguration
  103. 函數(shù)功能:設(shè)置中斷參數(shù)
  104. *******************************************************************************/
  105. void IntConfiguration(void)
  106. {
  107. IT0 = 0;  //INT0為低電平觸發(fā)方式
  108. IT1 = 0;  //INT1為低電平觸發(fā)方式
  109. EX0 = 1;  //INT0中斷允許
  110. EX1 = 1;   //INT1中斷允許
  111. TMOD = 0x12; //定時(shí)器T0工作方式為2,定時(shí)器T1工作方式為1
  112. PT0 = 1;  //定時(shí)器T0(時(shí)長)高優(yōu)先級
  113. PT1 = 1;  //定時(shí)器T1(側(cè)音)高優(yōu)先級
  114. ET0 = 1;  //定時(shí)器T0中斷允許
  115. ET1 = 1;  //定時(shí)器T1中斷允許
  116. T2CON = 0x00; //定時(shí)器T2工作方式為16位自動重載定時(shí)器
  117. ET2 = 1;  //定時(shí)器T2中斷允許
  118. TH0 = 0x9C;  //設(shè)定定時(shí)器T0為100us
  119.     TL0 = 0x9C;
  120. RCAP2H = 0x0B; //設(shè)定定時(shí)器T2為每秒中斷16次
  121.     RCAP2L = 0xDC;
  122. EA = 1;   //開總中斷
  123. }
  124. /*******************************************************************************
  125. 函 數(shù) 名:Int0
  126. 函數(shù)功能:外部中斷0觸發(fā)時(shí)發(fā)送Dot
  127. *******************************************************************************/
  128. void Int0(void) interrupt 0
  129. {
  130. Delay(5); //消抖
  131. if (K3 == 0)
  132. {
  133.   if (KeyFlg == 1) //不是點(diǎn)劃交替發(fā)送Dot
  134.    {SEND_DOT();}
  135.   if (K4 == 0)  //點(diǎn)劃交替發(fā)送Dash
  136.   {
  137.    SEND_DASH();
  138.    KeyFlg = 1;  //清除點(diǎn)劃交替標(biāo)志
  139.   }
  140. }
  141. }
  142. /*******************************************************************************
  143. 函 數(shù) 名:Int1
  144. 函數(shù)功能:外部中斷1觸發(fā)時(shí)發(fā)送Dash
  145. *******************************************************************************/
  146. void Int1(void) interrupt 2
  147. {
  148. Delay(5); //消抖
  149. if (K4 == 0)
  150. {
  151.   SEND_DASH();   
  152.   if (K3 == 0) //點(diǎn)劃交替發(fā)送Dot
  153.   {
  154.    SEND_DOT();   
  155.    KeyFlg = 0; //設(shè)置點(diǎn)劃交替標(biāo)志
  156.   }
  157. }
  158. }
  159. /*******************************************************************************
  160. 函 數(shù) 名:Timer0
  161. 函數(shù)功能:定時(shí)器T0的中斷函數(shù),產(chǎn)生100us/次的延時(shí),控制發(fā)碼時(shí)長。
  162. *******************************************************************************/     
  163. void Timer0(void) interrupt 1
  164. {
  165. TCount++;
  166. }
  167. /*******************************************************************************
  168. 函 數(shù) 名:Timer1(void)
  169. 函數(shù)功能:定時(shí)器T1的中斷函數(shù),控制側(cè)音頻率,ToneFre為側(cè)音頻率的序列號。
  170. *******************************************************************************/     
  171. void Timer1(void) interrupt 3
  172. {
  173. BEEP = ~BEEP;
  174. TH1 = Tone_H[ToneFreq];
  175.     TL1 = Tone_L[ToneFreq];
  176. }
  177. /*******************************************************************************
  178. 函 數(shù) 名:Timer2
  179. 函數(shù)功能:定時(shí)器T2的中斷函數(shù)。
  180. *******************************************************************************/
  181. void Timer2(void) interrupt 5
  182. {
  183. TF2 = 0;
  184. T2Count++;
  185. }
  186. /*******************************************************************************
  187. 函 數(shù) 名:Delay
  188. 函數(shù)功能:1ms延時(shí)函數(shù)
  189. 輸    入:t 延時(shí)時(shí)長 t x 1ms
  190. *******************************************************************************/
  191. void Delay(uint t)
  192. {
  193. uint max = 10 * t;  //計(jì)算時(shí)長閾值
  194. TCount = 0;
  195. TR0 = 1;
  196. while (TCount <= max); //產(chǎn)生延時(shí)
  197. TR0 = 0;
  198. }
  199. /*******************************************************************************
  200. 函 數(shù) 名:TimeCount
  201. 函數(shù)功能:計(jì)算Dot/Dash時(shí)長
  202. *******************************************************************************/
  203. void TimeCount(void)
  204. {
  205. DotTime = 12000 / WPM;
  206. DashTime = 3 * DotTime;
  207. }
  208. /*******************************************************************************
  209. 函 數(shù) 名:Paddle
  210. 函數(shù)功能:產(chǎn)生自動鍵電碼
  211. *******************************************************************************/
  212. void Paddle(void)
  213. {
  214. uint max = Tmax; //設(shè)定時(shí)長閾值
  215. TR1 = 1;   //開音頻振蕩器
  216. TCount = 0;   //時(shí)長計(jì)數(shù)器清零
  217. CWOUT = SendFlg; //設(shè)定發(fā)射狀態(tài)
  218. TR0 = 1;   //開時(shí)長計(jì)數(shù)器
  219. while (TCount <= max); //發(fā)送  
  220. TR0 = 0; //關(guān)時(shí)長計(jì)數(shù)器
  221. CWOUT = 1; //禁止發(fā)射
  222. TR1 = 0; //關(guān)音頻振蕩器
  223. Space(1); //點(diǎn)劃間隔
  224. T2Count = 0;
  225. }
  226. /*******************************************************************************
  227. 函 數(shù) 名:Space
  228. 函數(shù)功能:產(chǎn)生間隔
  229. 輸    入:n 間隔數(shù)量
  230. *******************************************************************************/
  231. void Space(uchar n)
  232. {
  233. uint max = n * DotTime; //計(jì)算時(shí)長閾值
  234. TCount = 0;    //時(shí)長計(jì)數(shù)器清零
  235. TR0 = 1;    //開時(shí)長計(jì)數(shù)器
  236. while (TCount <= max); //產(chǎn)生間隔
  237. TR0 = 0;    //關(guān)時(shí)長計(jì)數(shù)器
  238. }
  239. /*******************************************************************************
  240. 函 數(shù) 名:Function
  241. 函數(shù)功能:按照功能鍵執(zhí)行相關(guān)設(shè)置
  242. *******************************************************************************/
  243. void Function(void)
  244. {
  245. bit p = 0;
  246. INT_OFF();  //關(guān)INT
  247. SendFlg = 1; //禁止發(fā)射
  248. KeyValue = 0;
  249. while (K1 == 0) //長按鍵,每1秒變換一個功能
  250. {
  251.   Delay(100);    //每100ms計(jì)數(shù)一次
  252.   if (++KeyValue > 40) //保持循環(huán)按鍵
  253.    KeyValue = 0;
  254.   if (KeyValue % 10 == 0) //到達(dá)變換時(shí)間
  255.   {
  256.    switch (KeyValue)
  257.    {
  258.     case 10: SEND_DASH(); break; //設(shè)定發(fā)報(bào)速度提示
  259.     case 20: SEND_DASH(); SEND_DASH(); break; //設(shè)定側(cè)音頻率提示
  260.     case 30: SEND_DASH(); SEND_DASH(); SEND_DASH(); break; //錄入呼號提示
  261.    }
  262.   }
  263. }
  264. KeyValue /= 10;
  265. T2Count = 0;
  266. switch (KeyValue)
  267. {        
  268.   case 1: //調(diào)整發(fā)報(bào)速度
  269.    while (K1 == 1 && T2Count <= 96) //K1按下或6秒內(nèi)無鍵按下則退出
  270.    {
  271.     Display();
  272.     if (K4 == 0 && WPM < 60) //WPM+
  273.     {
  274.      while (T2Count < 16 && K4 == 0); //松手延遲
  275.      WPM++;
  276.      TimeCount();
  277.      SEND_DASH();
  278.      p = 1;
  279.     }
  280.     if (K3 == 0 && WPM > 4) //WPM-
  281.     {
  282.      while (T2Count < 16 && K3 == 0 ); //松手延遲
  283.      WPM--;
  284.      TimeCount();
  285.      SEND_DASH();
  286.      p = 1;
  287.     }
  288.    }
  289.    if (p == 1)
  290.     WriteSystem(); //記憶參數(shù)
  291.    SEND_DASH();
  292.    break;
  293.   case 2: //設(shè)定側(cè)音頻率
  294.    while (K1 == 1 && T2Count <= 96) //K1按下或6秒內(nèi)無鍵按下則退出
  295.    {
  296.     Display();
  297.     if (K3 == 0 && ToneFreq > 0) //頻率減按下
  298.     {
  299.      while (T2Count < 16 && K3 == 0); //松手延遲
  300.      ToneFreq--;
  301.      TH1 = Tone_H[ToneFreq];
  302.      TL1 = Tone_L[ToneFreq];
  303.      SEND_DASH();
  304.      p = 1;
  305.     }
  306.     if (K4 == 0 && ToneFreq < 6) //頻率加按下
  307.     {
  308.      while (T2Count < 16 && K4 == 0); //松手延遲
  309.      ToneFreq++;
  310.      TH1 = Tone_H[ToneFreq];
  311.      TL1 = Tone_L[ToneFreq];
  312.      SEND_DASH();
  313.      p = 1;
  314.     }
  315.    }
  316.    if (p == 1)
  317.     WriteSystem(); //記憶參數(shù)
  318.    SEND_DASH();
  319.    break;
  320.   case 3: //錄入呼號
  321.    RecordInfor();
  322. }
  323. INT_ON(); //開INT
  324. }
  325. /*******************************************************************************
  326. 函 數(shù) 名:RecordInfor
  327. 函數(shù)功能:錄入內(nèi)置信息,最多10個字符
  328. *******************************************************************************/
  329. void RecordInfor(void)
  330. {
  331. bit k = 0;  //間隔標(biāo)志清零
  332. Number = 0;  //字符數(shù)清零     
  333. T2Count = 0; //退出計(jì)時(shí)清零
  334. while (K1 && Number < Cmax && T2Count <= 320) //按K1鍵/點(diǎn)劃數(shù)為最大值/者20秒無按鍵則退出
  335. {
  336.   if (!K3) //Dot鍵按下
  337.   {     
  338.    Delay(5); //消抖
  339.    if (!K3)
  340.    {
  341.     CW_x[Number++] = '0';
  342.     SEND_DOT();
  343.     TCount = 0; //間隔計(jì)時(shí)清零
  344.     TR0 = 1; //開定時(shí)器T0用于添加字符間隔
  345.     k = 1;  //設(shè)置間隔標(biāo)志
  346.    }
  347.   }
  348.   if (!K4) //Dash鍵按下
  349.   {
  350.    Delay(5);
  351.    if (!K4)
  352.    {
  353.     CW_x[Number++] = '1';
  354.     SEND_DASH();
  355.     TCount = 0;
  356.     TR0 = 1;
  357.     k = 1;
  358.    }
  359.   }
  360.   if (k && TCount >= DashTime) //添加字符間隔
  361.   {
  362.    CW_x[Number++] = '.';
  363.    TR0 = 0; //關(guān)定時(shí)器T0
  364.    k = 0;  //清除間隔標(biāo)志
  365.   }
  366. }
  367. if (Number > 0) //有信息錄入則補(bǔ)字符間隔、記憶字符數(shù)
  368. {
  369.   if (CW_x[Number - 1] != '.')
  370.    CW_x[Number] = '.' ;
  371.   WriteSystem();
  372. }
  373. }
  374. /*******************************************************************************
  375. 函 數(shù) 名:WriteSystem
  376. 函數(shù)功能:寫入系統(tǒng)參數(shù)
  377. *******************************************************************************/
  378. void WriteSystem(void)
  379. {
  380. EEPROM_SectorErase(SectorAddr_1);
  381. CW_x[0] = WPM;
  382. CW_x[1] = ToneFreq;
  383. CW_x[2] = Number;
  384. EEPROM_Write(SectorAddr_1, CW_x, 3);
  385. }
  386. /*******************************************************************************
  387. 函 數(shù) 名:Player
  388. 函數(shù)功能:發(fā)送內(nèi)置信息
  389. 輸    入:m 發(fā)送字符數(shù),x[]信息
  390. *******************************************************************************/
  391. void Player(uchar m, uchar x[])
  392. {
  393. uchar j = 0;
  394. for (; j < m; j++)
  395.   switch (x[j])
  396.   {
  397.    case '0': SEND_DOT(); break; //發(fā)送Dot
  398.    case '1': SEND_DASH(); break; //發(fā)送Dash
  399.    case '.': Space(2); break;  //字符間隔
  400.    case ' ': Space(6);    //單詞間隔
  401.   }
  402. }
  403. /*******************************************************************************
  404. 函 數(shù) 名:PlayCall
  405. 函數(shù)功能:發(fā)送呼叫
  406. *******************************************************************************/
  407. void PlayCall(void)
  408. {
  409. uchar i;
  410. EEPROM_Read(SectorAddr_2, CW_x, Number);
  411. for (i = 1; i < 4; i++)
  412.   Player(10, C1);
  413. Player(6, C2);
  414. for (i = 1; i < 4; i++)
  415. {
  416.   Player(Number, CW_x);
  417.   Space(4);
  418. }
  419. Player(14, C3);
  420. }
  421. /*******************************************************************************
  422. 函 數(shù) 名:Display
  423. 函數(shù)功能:使用數(shù)碼管顯示
  424. *******************************************************************************/
  425. void Display(void)
  426. {
  427. uchar i;
  428. uint f = 400 + ToneFreq * 100;
  429. for (i = 1; i < 9; i++)
  430. {
  431.   switch (i)
  432.   {
  433.    case 1: if (WPM/10 != 0) {LSC = 1; LSB = 1; LSA = 1; GPIO_DIG = DIG_CODE[WPM / 10];} break; //顯示W(wǎng)PM十位
  434.    case 2: LSC = 1; LSB = 1; LSA = 0; GPIO_DIG = DIG_CODE[WPM % 10]; break;     //顯示W(wǎng)PM個位
  435.    case 5: if (f == 1000) {LSC = 0; LSB = 1; LSA = 1; GPIO_DIG = 0x06;} break;  //顯示側(cè)音頻率千位     
  436.    case 6: LSC = 0; LSB = 1; LSA = 0; GPIO_DIG = DIG_CODE[(f / 100) % 10]; break; //顯示側(cè)音頻率百位
  437.    case 7: LSC = 0; LSB = 0; LSA = 1;GPIO_DIG = 0x3F; break; //顯示側(cè)音頻率十位
  438.    case 8: LSC = 0; LSB = 0; LSA = 0;GPIO_DIG = 0x3F;   //顯示側(cè)音頻率個位
  439.   }
  440.   Delay(1);
  441.   GPIO_DIG = 0x00; //消隱
  442. }
  443. }
  444. /*******************************************************************************
  445. 函 數(shù) 名:EEPROM_SectorErase
  446. 函數(shù)功能:擦除一個扇區(qū)(512字節(jié)/扇區(qū))
  447. 輸    入:扇區(qū)地址 EE_address
  448. *******************************************************************************/
  449. void EEPROM_SectorErase(uint EE_address)
  450. {
  451. EA = 0;       //關(guān)總中斷
  452. ISP_ADDRH = EE_address / 256; //扇區(qū)地址高字節(jié)
  453. ISP_ADDRL = EE_address % 256; //扇區(qū)地址低字節(jié)
  454. ISP_ENABLE();     //允許ISP操作
  455. ISP_ERASE();     //扇區(qū)擦除命令
  456. ISP_TRIG();      //觸發(fā)ISP操作
  457. ISP_DISABLE();     //禁止ISP操作
  458. EA = 1;       //開總中斷
  459. }
  460. /*******************************************************************************
  461. 函 數(shù) 名:EEPROM_Read
  462. 函數(shù)功能:讀n個字節(jié)函數(shù)(最多255字節(jié)/次)
  463. 輸    入:扇區(qū)地址 EE_address, 讀出數(shù)據(jù) *DataAddress, 讀出字節(jié)數(shù) n
  464. *******************************************************************************/
  465. void EEPROM_Read(uint EE_address, uchar *DataAddress, uchar n)
  466. {
  467. EA = 0;        //關(guān)總中斷
  468. ISP_ENABLE();      //允許ISP操作
  469. ISP_READ();       //字節(jié)讀命令
  470. do
  471. {
  472.   ISP_ADDRH = EE_address / 256; //地址高字節(jié)
  473.   ISP_ADDRL = EE_address % 256; //地址低字節(jié)
  474.   ISP_TRIG();      //觸發(fā)ISP操作
  475.   _nop_();
  476.   *DataAddress = ISP_DATA;  //讀數(shù)據(jù)到指定變量
  477.   EE_address++;     //下一個地址
  478.   DataAddress++;     //下一個數(shù)據(jù)
  479. }
  480. while (--n);      //直到結(jié)束
  481. ISP_DISABLE();      //禁止ISP操作
  482. EA = 1;        //開總中斷
  483. }
  484. /*******************************************************************************
  485. 函 數(shù) 名:EEPROM_Write
  486. 函數(shù)功能:寫n個字節(jié)數(shù)據(jù)(最多255字節(jié)/次)
  487. 輸    入:扇區(qū)地址 EE_address,寫入數(shù)據(jù) *DataAddress,寫入字節(jié)數(shù) n
  488. *******************************************************************************/
  489. void EEPROM_Write(uint EE_address, uchar *DataAddress, uchar n)
  490. {
  491. EA = 0;        //關(guān)總中斷
  492. ISP_ENABLE();      //允許ISP操作
  493. ISP_WRITE();      //字節(jié)寫命令
  494. do
  495. {
  496.   ISP_ADDRH = EE_address / 256; //送地址高字節(jié)
  497.   ISP_ADDRL = EE_address % 256; //送地址低字節(jié)
  498.   ISP_DATA  = *DataAddress;  //送數(shù)據(jù)到ISP_DATA
  499.   ISP_TRIG();      //觸發(fā)ISP操作
  500.   _nop_();
  501.   EE_address++;     //下一個地址
  502.   DataAddress++;     //下一個數(shù)據(jù)
  503. }
  504. while (--n);      //直到結(jié)束
  505. ISP_DISABLE();      //禁止ISP操作
  506. EA = 1;        //開總中斷
  507. }
復(fù)制代碼


回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品成人一区二区三区 | 欧美日韩一区二区在线观看 | 免费观看一级特黄欧美大片 | 成人av一区二区三区 | 成人av免费 | 中文字幕在线观看 | 欧美日本在线观看 | 成人在线视频网址 | 日本在线一区二区三区 | 一区欧美| 91精品国产91久久久久久吃药 | 中文字幕免费在线 | 国产精品视频偷伦精品视频 | 一级片网址 | 免费视频一区二区 | 一区二区三区在线免费观看 | av网站在线免费观看 | 亚洲国产一区二区三区, | 国产高清视频一区二区 | 精品三级在线观看 | 在线观看成人 | 国产1区2区| 天天色影视综合 | 久久午夜精品 | 国产精品国产三级国产a | 日本成人中文字幕 | 日韩中文字幕在线不卡 | 久久国内 | 欧美精品一二区 | 色资源在线视频 | 91精品国产欧美一区二区 | 国产免费一二三区 | 日韩精品视频中文字幕 | 成人福利在线 | 日本亚洲精品成人欧美一区 | 国产高清在线精品 | 免费一区在线 | 亚洲男人天堂网 | 亚洲一区综合 | 日韩精品成人 | 日韩成人av在线播放 |