8535.s
上传用户:rbltsz
上传日期:2007-09-19
资源大小:2509k
文件大小:6k
源码类别:

单片机开发

开发平台:

C/C++

  1. .module _8535.c
  2. .area data(ram, con, rel)
  3. _Table::
  4. .blkb 2
  5. .area idata
  6. .byte 63,6
  7. .area data(ram, con, rel)
  8. .blkb 2
  9. .area idata
  10. .byte 91,'O
  11. .area data(ram, con, rel)
  12. .blkb 2
  13. .area idata
  14. .byte 'f,'m
  15. .area data(ram, con, rel)
  16. .blkb 2
  17. .area idata
  18. .byte 125,7
  19. .area data(ram, con, rel)
  20. .blkb 2
  21. .area idata
  22. .byte 127,'o
  23. .area data(ram, con, rel)
  24. .dbfile I:AVRpracticeADC8535.c
  25. .dbsym e Table _Table A[10:10]c
  26. _Data::
  27. .blkb 2
  28. .area idata
  29. .byte 0,0
  30. .area data(ram, con, rel)
  31. .dbfile I:AVRpracticeADC8535.c
  32. .blkb 2
  33. .area idata
  34. .byte 0,0
  35. .area data(ram, con, rel)
  36. .dbfile I:AVRpracticeADC8535.c
  37. .dbsym e Data _Data A[4:4]c
  38. .area text(rom, con, rel)
  39. .dbfile I:AVRpracticeADC8535.c
  40. .dbfunc e DelayMs _DelayMs fV
  41. ;              j -> R20
  42. ;              i -> R16,R17
  43. .even
  44. _DelayMs::
  45. rcall push_gset1
  46. .dbline -1
  47. .dbline 10
  48. ; #include<io8535v.h>
  49. ; #define uchar unsigned char
  50. ; #define uint  unsigned int
  51. ; uchar Table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  52. ; uchar Data[4]={0,0,0,0};
  53. ; void DelayMs(uint i)  //0.25ms
  54. ; {uchar j;
  55. .dbline 11
  56. ;  for(;i!=0;i--)
  57. rjmp L5
  58. L2:
  59. .dbline 12
  60. .dbline 12
  61. ldi R20,250
  62. rjmp L9
  63. L6:
  64. .dbline 12
  65. .dbline 12
  66. .dbline 12
  67. L7:
  68. .dbline 12
  69. dec R20
  70. L9:
  71. .dbline 12
  72. tst R20
  73. brne L6
  74. .dbline 12
  75. L3:
  76. .dbline 11
  77. subi R16,1
  78. sbci R17,0
  79. L5:
  80. .dbline 11
  81. cpi R16,0
  82. cpc R16,R17
  83. brne L2
  84. X0:
  85. .dbline -2
  86. .dbline 13
  87. ;   {for(j=250;j!=0;j--) {;}}
  88. ; }
  89. L1:
  90. rcall pop_gset1
  91. .dbline 0 ; func end
  92. ret
  93. .dbsym r j 20 c
  94. .dbsym r i 16 i
  95. .dbend
  96. .dbfunc e Display _Display fV
  97. ;            sel -> R20
  98. ;              i -> R22
  99. ;              p -> R10,R11
  100. .even
  101. _Display::
  102. rcall push_gset3
  103. mov R10,R16
  104. mov R11,R17
  105. .dbline -1
  106. .dbline 16
  107. ; void Display(uchar *p) //间隔5ms显示
  108. ; {uchar i,sel=0x01;
  109. .dbline 16
  110. ldi R20,1
  111. .dbline 17
  112. ;  for(i=0;i<4;i++)
  113. clr R22
  114. rjmp L14
  115. L11:
  116. .dbline 18
  117. .dbline 18
  118. out 0x18,R20
  119. .dbline 19
  120. mov R30,R22
  121. clr R31
  122. add R30,R10
  123. adc R31,R11
  124. ldd R30,z+0
  125. clr R31
  126. ldi R24,<_Table
  127. ldi R25,>_Table
  128. add R30,R24
  129. adc R31,R25
  130. ldd R2,z+0
  131. clr R3
  132. ldi R24,255
  133. ldi R25,0
  134. sub R24,R2
  135. sbc R25,R3
  136. out 0x15,R24
  137. .dbline 20
  138. ldi R16,20
  139. ldi R17,0
  140. rcall _DelayMs
  141. .dbline 21
  142. lsl R20
  143. .dbline 22
  144. L12:
  145. .dbline 17
  146. inc R22
  147. L14:
  148. .dbline 17
  149. cpi R22,4
  150. brlo L11
  151. .dbline -2
  152. .dbline 23
  153. ;   {PORTB=sel;
  154. ;    PORTC=0xff-Table[p[i]];
  155. ;    DelayMs(20);
  156. ;    sel=sel<<1;
  157. ;   }
  158. ; }
  159. L10:
  160. rcall pop_gset3
  161. .dbline 0 ; func end
  162. ret
  163. .dbsym r sel 20 c
  164. .dbsym r i 22 c
  165. .dbsym r p 10 pc
  166. .dbend
  167. .dbfunc e ADC_Convert _ADC_Convert fi
  168. ;          temp1 -> R18,R19
  169. ;          temp2 -> R16,R17
  170. .even
  171. _ADC_Convert::
  172. .dbline -1
  173. .dbline 26
  174. ; uint ADC_Convert(void)
  175. ; {uint temp1,temp2;
  176. .dbline 27
  177. ;  temp1=(uint)ADCL;
  178. in R18,0x4
  179. clr R19
  180. .dbline 28
  181. ;  temp2=(uint)ADCH;
  182. in R16,0x5
  183. clr R17
  184. .dbline 29
  185. ;  temp2=(temp2<<8)+temp1;
  186. mov R2,R16
  187. mov R3,R17
  188. mov R3,R2
  189. clr R2
  190. add R2,R18
  191. adc R3,R19
  192. mov R16,R2
  193. mov R17,R3
  194. .dbline 30
  195. ;  return(temp2);
  196. .dbline -2
  197. L15:
  198. .dbline 0 ; func end
  199. ret
  200. .dbsym r temp1 18 i
  201. .dbsym r temp2 16 i
  202. .dbend
  203. .dbfunc e Process _Process fV
  204. ;              p -> R20,R21
  205. ;              i -> R22,R23
  206. .even
  207. _Process::
  208. rcall push_gset2
  209. mov R20,R18
  210. mov R21,R19
  211. mov R22,R16
  212. mov R23,R17
  213. .dbline -1
  214. .dbline 34
  215. ; }
  216. ; void Process(uint i,uchar *p)
  217. ; {p[0]=i/1000;
  218. .dbline 34
  219. ldi R18,1000
  220. ldi R19,3
  221. mov R16,R22
  222. mov R17,R23
  223. rcall div16u
  224. mov R30,R20
  225. mov R31,R21
  226. std z+0,R16
  227. .dbline 35
  228. ;  i=i%1000;
  229. ldi R18,1000
  230. ldi R19,3
  231. mov R16,R22
  232. mov R17,R23
  233. rcall mod16u
  234. mov R22,R16
  235. mov R23,R17
  236. .dbline 36
  237. ;  p[1]=i/100;
  238. ldi R18,100
  239. ldi R19,0
  240. rcall div16u
  241. mov R30,R20
  242. mov R31,R21
  243. std z+1,R16
  244. .dbline 37
  245. ;  i=i%100;
  246. ldi R18,100
  247. ldi R19,0
  248. mov R16,R22
  249. mov R17,R23
  250. rcall mod16u
  251. mov R22,R16
  252. mov R23,R17
  253. .dbline 38
  254. ;  p[2]=i/10;
  255. ldi R18,10
  256. ldi R19,0
  257. rcall div16u
  258. mov R30,R20
  259. mov R31,R21
  260. std z+2,R16
  261. .dbline 39
  262. ;  i=i%10;
  263. ldi R18,10
  264. ldi R19,0
  265. mov R16,R22
  266. mov R17,R23
  267. rcall mod16u
  268. mov R22,R16
  269. mov R23,R17
  270. .dbline 40
  271. ;  p[3]=i;
  272. mov R30,R20
  273. mov R31,R21
  274. std z+3,R22
  275. .dbline -2
  276. .dbline 41
  277. ; }
  278. L16:
  279. rcall pop_gset2
  280. .dbline 0 ; func end
  281. ret
  282. .dbsym r p 20 pc
  283. .dbsym r i 22 i
  284. .dbend
  285. .dbfunc e main _main fV
  286. ;              i -> R20,R21
  287. .even
  288. _main::
  289. .dbline -1
  290. .dbline 54
  291. ; /*   
  292. ; void Timer0_Init(void)
  293. ; {SREG=SREG|0x80; //全局中断开;
  294. ;  TIMSK=TIMSK|0x01;//T/C0溢出中断使能;
  295. ;  TCCR0=0x05;//CLK/1024;128uS
  296. ;  TIFR=0x01;//T/C0中断标志位写1清0;
  297. ;  TCNT0=256-125;//125*128us=16ms
  298. ; }*/
  299. ; void main(void)
  300. ; {uint i;
  301. .dbline 56
  302. ;  //设置A口为不带上拉输入;
  303. ;  DDRA=0x00;
  304. clr R2
  305. out 0x1a,R2
  306. .dbline 57
  307. ;  PORTA=0x00;
  308. out 0x1b,R2
  309. .dbline 59
  310. ;  //设置B口为推挽1输出;
  311. ;  DDRB=0xff;
  312. ldi R24,255
  313. out 0x17,R24
  314. .dbline 60
  315. ;  PORTB=0xff;
  316. out 0x18,R24
  317. .dbline 62
  318. ;  //设置C口为推挽1输出;
  319. ;  DDRC=0xff;
  320. out 0x14,R24
  321. .dbline 63
  322. ;  PORTC=0xff;
  323. out 0x15,R24
  324. .dbline 65
  325. ;  //B口初始化输出1;C口初始化输出0;点亮全部数码管;
  326. ;  PORTB=0xff;
  327. out 0x18,R24
  328. .dbline 66
  329. ;  PORTC=0x00;
  330. out 0x15,R2
  331. .dbline 68
  332. ;  //ADC初始化;
  333. ;  ADMUX=0x01;//选择第三通道;
  334. ldi R24,1
  335. out 0x7,R24
  336. .dbline 69
  337. ;  ADCSR=0xe6;//125K转换速率,自由转换模式;启动AD转换器;
  338. ldi R24,230
  339. out 0x6,R24
  340. .dbline 71
  341. ;  //延时待系统稳定;
  342. ;  DelayMs(3000);
  343. ldi R16,3000
  344. ldi R17,11
  345. rcall _DelayMs
  346. rjmp L19
  347. L18:
  348. .dbline 74
  349. .dbline 74
  350. rcall _ADC_Convert
  351. mov R20,R16
  352. mov R21,R17
  353. .dbline 75
  354. ldi R18,<_Data
  355. ldi R19,>_Data
  356. rcall _Process
  357. .dbline 76
  358. ldi R16,<_Data
  359. ldi R17,>_Data
  360. rcall _Display
  361. .dbline 77
  362. L19:
  363. .dbline 73
  364. rjmp L18
  365. X1:
  366. .dbline -2
  367. .dbline 78
  368. ;  
  369. ;  while(1)
  370. ;  {i=ADC_Convert();
  371. ;   Process(i,Data);
  372. ;   Display(Data);
  373. ;  }
  374. ; }
  375. L17:
  376. .dbline 0 ; func end
  377. ret
  378. .dbsym r i 20 i
  379. .dbend