微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 第64节:大数据的乘法运算

第64节:大数据的乘法运算

时间:11-22 来源:互联网 点击:

  1. 零串口发送完成中断请求标志
  2. SBUF =ucSendData; //发送一个字节
  3. delay_short(400);//每个字节之间的延时,这里非常关键,也是最容易出错的地方。延时的大小请根据实际项目来调整
  4. TI = 0; //清零串口发送完成中断请求标志
  5. ES = 1; //允许串口中断
  6. }
  7. void T0_time(void) interrupt 1 //定时中断
  8. {
  9. TF0=0;//清除中断标志
  10. TR0=0; //关中断
  11. if(uiSendCnt
  12. {
  13. uiSendCnt++; //表面上这个数据不断累加,但是在串口中断里,每接收一个字节它都会被清零,除非这个中间没有串口数据过来
  14. ucSendLock=1; //开自锁标志
  15. }
  16. TH0=0xfe; //重装初始值(65535-500)=65035=0xfe0b
  17. TL0=0x0b;
  18. TR0=1;//开中断
  19. }
  20. void usart_receive(void) interrupt 4 //串口接收数据中断
  21. {
  22. if(RI==1)
  23. {
  24. RI = 0;
  25. ++uiRcregTotal;
  26. if(uiRcregTotal>const_rc_size)//超过缓冲区
  27. {
  28. uiRcregTotal=const_rc_size;
  29. }
  30. ucRcregBuf[uiRcregTotal-1]=SBUF; //将串口接收到的数据缓存到接收缓冲区里
  31. uiSendCnt=0;//及时喂狗,虽然main函数那边不断在累加,但是只要串口的数据还没发送完毕,那么它永远也长不大,因为每个中断都被清零。
  32. }
  33. else//发送中断,及时把发送中断标志位清零
  34. {
  35. TI = 0;
  36. }
  37. }
  38. void delay_long(unsigned int uiDelayLong)
  39. {
  40. unsigned int i;
  41. unsigned int j;
  42. for(i=0;i
  43. {
  44. for(j=0;j<500;j++)//内嵌循环的空指令数量
  45. {
  46. ; //一个分号相当于执行一条空语句
  47. }
  48. }
  49. }
  50. void delay_short(unsigned int uiDelayShort)
  51. {
  52. unsigned int i;
  53. for(i=0;i
  54. {
  55. ; //一个分号相当于执行一条空语句
  56. }
  57. }
  58. void initial_myself(void)//第一区 初始化单片机
  59. {
  60. beep_dr=1; //用PNP三极管控制蜂鸣器,输出高电平时不叫。
  61. //配置定时器
  62. TMOD=0x01;//设置定时器0为工作方式1
  63. TH0=0xfe; //重装初始值(65535-500)=65035=0xfe0b
  64. TL0=0x0b;
  65. //配置串口
  66. SCON=0x50;
  67. TMOD=0X21;
  68. TH1=TL1=-(11059200L/12/32/9600);//这段配置代码具体是什么意思,我也不太清楚,反正是跟串口波特率有关。
  69. TR1=1;
  70. }
  71. void initial_peripheral(void) //第二区 初始化外围
  72. {
  73. EA=1; //开总中断
  74. ES=1; //允许串口中断
  75. ET0=1; //允许定时中断
  76. TR0=1; //启动定时中断
  77. }


总结陈词:
既然这节讲了乘法程序,那么下一节接着讲常用的除法程序,这种大数据的除法程序是什么样的?欲知详情,请听下回分解----大数据的除法运算。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top