TM8888.C
上传用户:woden7206
上传日期:2015-11-28
资源大小:14486k
文件大小:3k
源码类别:

单片机开发

开发平台:

MultiPlatform

  1. #include <at89x51.h>
  2. #include <absacc.h>
  3. #include <intrins.h>
  4. #include <MT8888.h>
  5. void main(void)
  6. {
  7. init();
  8. while(1)
  9. {
  10. // mode_cp();
  11. mode_DTMFOUT();
  12. // mode_DTMFIN();
  13. // ONTEL=0;
  14. }
  15. }
  16. void mode_cp(void)
  17. {
  18. TMOD=0x11;
  19. TH1=0;
  20. TL1=0;
  21. TH0=0;
  22. TL0=0;
  23. ONTEL=1;
  24. P0=0xff;
  25. while(INT);
  26. while(!INT);
  27. TR1=1;
  28. while(INT);
  29. // TR1=0;
  30. // TR0=1;
  31. while(!INT);
  32. TR1=0;
  33. _nop_();
  34. }
  35. void mode_DTMFOUT(void)
  36. {
  37. uchar a;
  38. ONTEL=1;
  39. delayms(1000);
  40. XBYTE[0x4000]=0x01;
  41. delayms(500);
  42. XBYTE[0x4000]=0x0a;
  43. delayms(500);
  44. XBYTE[0x4000]=0x0a;
  45. delayms(500);
  46. XBYTE[0x4000]=0x05;
  47. delayms(500);
  48. a=XBYTE[0x0100];
  49. P1=0x02;
  50. _nop_();
  51. /* uchar a;
  52. ONTEL=1;
  53. P0=0xff;
  54. delayms(1000);
  55. a=0x09;
  56. writedata(a);
  57. delayms(2000);
  58. a=0x01;
  59. writedata(a);
  60. delayms(500);
  61. a=0x0a;
  62. writedata(a);
  63. delayms(500);
  64. a=0x0a;
  65. writedata(a);
  66. delayms(500);
  67. a=0x05;
  68. writedata(a);
  69. delayms(500);
  70. a=0x06;
  71. writedata(a);
  72. delayms(500);
  73. a=0x07;
  74. writedata(a);
  75. delayms(500);
  76. a=0x07;
  77. writedata(a);
  78. delayms(500);
  79. a=0x01;
  80. writedata(a);
  81. delayms(500);
  82. a=0x07;
  83. writedata(a);
  84. delayms(500);
  85. a=0x04;
  86. writedata(a);
  87. delayms(500);
  88. a=0x08;
  89. writedata(a);
  90. delayms(500);
  91. a=readsr();
  92. */
  93. }
  94. void mode_DTMFIN(void)
  95. {
  96. uchar a;
  97. ONTEL=1;
  98. P0=0xff;
  99. do
  100. {
  101. a=readsr();
  102. }while((a&0x04)==0);
  103. a=readdata();
  104. _nop_();
  105. }
  106. void init(void)
  107. {
  108. uchar a;
  109. P1=0;
  110. ONTEL=0;
  111. delayms(100);
  112. XBYTE[0x0100]=0;
  113. XBYTE[0x0100]=0;
  114. XBYTE[0x0100]=0x08;
  115. XBYTE[0x0100]=0;
  116. a=XBYTE[0x0100];
  117. XBYTE[0x0100]=0x01;
  118. delayms(100);
  119. XBYTE[0x0100]=0x09;
  120. XBYTE[0x0100]=0;
  121. /*
  122. a=readsr();
  123. a=0x00;
  124. writesr(a);
  125. writesr(a);
  126. a=0x08;
  127. writesr(a);
  128. a=0x00;
  129. writesr(a);
  130. a=readsr();
  131. a=0x06;//01;
  132. writesr(a);
  133. delayms(100);
  134. a=0x0e;//09;
  135. writesr(a);
  136. a=0x00;
  137. writesr(a);
  138. */
  139. }
  140. uchar readsr(void)
  141. {
  142. uchar b;
  143. WRE=1;
  144. RDE=0;
  145. RSE=1;
  146. CSE=0;
  147. _nop_();
  148. _nop_();
  149. b=P0&0x0f;
  150. CSE=1;
  151. return(b);
  152. }
  153. void writesr(uchar a)
  154. {
  155. WRE=0;
  156. RDE=1;
  157. RSE=1;
  158. CSE=0;
  159. _nop_();
  160. _nop_();
  161. P0=a;
  162. _nop_();
  163. _nop_();
  164. CSE=1;
  165. }
  166. uchar readdata(void)
  167. {
  168. uchar b;
  169. WRE=1;
  170. RDE=0;
  171. RSE=0;
  172. CSE=0;
  173. _nop_();
  174. _nop_();
  175. b=P0&0x0f;
  176. CSE=1;
  177. return(b);
  178. }
  179. void writedata(uchar a)
  180. {
  181. WRE=0;
  182. RDE=1;
  183. RSE=0;
  184. CSE=0;
  185. _nop_();
  186. _nop_();
  187. P0=a;
  188. _nop_();
  189. _nop_();
  190. CSE=1;
  191. }
  192. void delayms(uint n)
  193. {
  194. uint b;
  195. while(n>0)
  196. {
  197. for(b=0;b<100;b++);
  198. n--;
  199. }
  200. }