查看: 1718|回复: 1

ADuC841的例程——正弦信号发生器

[复制链接]
  • TA的每日心情
    郁闷
    2013-9-12 12:12
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2016-3-1 16:30:49 | 显示全部楼层 |阅读模式
    分享到:
    1. 实验9-2:正弦信号发生器

    2.     该程序利用DAC0产生正弦波信号。

    3.           $MOD841

    4.              SP0    EQU   50H

    5.              CLK81  EQU   P3.5

    6.              DAT81  EQU   P3.3

    7.              KEYVAL EQU   31H

    8. ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

    9.              ORG    0000H

    10.              LJMP   MAIN

    11.              ORG    0003H

    12.              LJMP   SERVE1

    13.              ORG    002BH

    14.              LJMP   SERVE2

    15.              ORG    0060H

    16. MAIN:   MOV    R0,#0FH

    17.            CLR    A

    18. QING:     MOV    @R0,A

    19.            DJNZ   R0,QING

    20.            MOV    SP,#SP0

    21.            MOV    R3,#0FFH

    22.            LCALL  YS

    23. ;---------------------------------------

    24.            LCALL  INI8281

    25.            LCALL  INI841

    26. HERE:     LJMP   HERE

    27. ;-------------------------------------

    28. INI841:      SETB   EA

    29.            SETB   ET2

    30.            SETB   EX0

    31.            MOV    T2CON,#00H

    32.            MOV    ADCCON1,#80H        ; 给内部参考电源上电

    33.            MOV    DACCON,#0DH                   ; DAC1清0,DAC0正常输出,设置同步更新输出,上电DAC0

    34.            RET

    35. ;----------------------------------

    36. INI8281:     SETB   CLK81

    37.            SETB   DAT81

    38.            MOV    A,#12H

    39.            LCALL  WTO81

    40.            MOV    A,#80H

    41.            LCALL  WTO81

    42.            RET

    43. ;---------------------------------

    44. SERVE1:   CLR  TR2

    45.            MOV  A,#93H

    46.            LCALL WTO81

    47.            LCALL RDKVAL

    48.            MOV   A,KEYVAL

    49.            CJNE  A,#01H,S1

    50.            LCALL FUNCTION1

    51.            LJMP  S2

    52. S1:         CJNE  A,#02H,S2

    53.            LCALL FUNCTION2

    54. S2:         RETI

    55. ;----------------------------------

    56. SERVE2:   CLR  TF2

    57. KAISHI:    INC  R3

    58.            CJNE R3,#200,DADISP

    59.            MOV  R3,#0FFH

    60.            LJMP KAISHI

    61. DADISP:   MOV  DPTR,#TAB1

    62.            MOV  A,R3

    63.            MOVC A,@A+DPTR

    64.            MOV  DAC0H,A

    65.            MOV  DPTR,#TAB2

    66.            MOV  A,R3

    67.            MOVC A,@A+DPTR

    68.            MOV  DAC0L,A

    69.            RETI

    70. ;---------------------------------

    71. FUNCTION1:MOV  RCAP2H,#0EAH

    72.           MOV  RCAP2L,#65H

    73.           MOV  TH2,#0EAH

    74.           MOV  TL2,#65H

    75.           SETB TR2

    76.           RET

    77. ;-----------------------------------

    78. FUNCTION2:MOV  RCAP2H,#0FDH

    79.           MOV  RCAP2L,#0D7H

    80.           MOV  TH2,#0FDH

    81.           MOV  TL2,#0D7H

    82.           SETB TR2

    83.           RET

    84. ;-----------------------------

    85. WTO81:     MOV         R6,#08H

    86. WAT:         CLR CLK81

    87.                    LCALL      DELAY

    88.                    SETB         CLK81

    89.                    JB     DAT81,WAT

    90.                    CLR CLK81

    91.                    LCALL      DELAY

    92.                    SETB         CLK81

    93.                    JNB  DAT81,$

    94. WTB81:     RLC A

    95.                    MOV         DAT81,C

    96.            CLR CLK81

    97.                    LCALL      DELAY

    98.                    SETB         CLK81

    99.                    LCALL      DELAY

    100.                    LCALL      DELAY

    101.                    DJNZ        R6,WTB81

    102.                    SETB         DAT81

    103.            RET

    104. ;-----------------------------------

    105. RDKVAL: CLR  CLK81

    106.                    LCALL      DELAY

    107.                    SETB         CLK81

    108.                    JB     DAT81,$

    109.            CLR CLK81

    110.                    LCALL      DELAY

    111.                    SETB         CLK81

    112.            MOV         R6,#08H

    113. RD1:     LCALL      DELAY

    114.            LCALL      DELAY

    115.            LCALL      DELAY

    116.            MOV         C,DAT81

    117.                    LCALL      DELAY

    118.                    RLC A

    119.            CLR CLK81

    120.                    LCALL      DELAY

    121.                    SETB         CLK81

    122.            DJNZ        R6,RD1

    123.            MOV         KEYVAL,A

    124.            RET

    125. ;---------------------------------

    126. DELAY:  NOP

    127.            NOP

    128.            NOP

    129.            NOP

    130.            NOP

    131.            NOP

    132.            NOP

    133.            NOP

    134.            NOP

    135.            NOP

    136.            NOP

    137.            NOP

    138.            RET

    139. ;----------------------------------------

    140. YS:              MOV         R5,#00H

    141.                    MOV         R4,#50H

    142. YS1:            DJNZ        R5,$

    143.                    DJNZ        R4,YS1

    144.                    RET

    145. ;----------------------------------------

    146. TAB1:  DB  08H,08H,08H,08H,09H,09H,09H,09H,09H,0AH,0AH,0AH,0AH,0BH,0BH,0BH,0BH,0CH,0CH

    147.        DB  0CH,0CH,0CH,0DH,0DH,0DH,0DH,0DH,0EH,0EH,0EH,0EH,0EH,0EH,0EH,0FH,0FH,0FH,0FH

    148.        DB  0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH

    149.        DB  0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0EH,0EH,0EH,0EH,0EH,0EH,0EH,0DH,0DH

    150.        DB  0DH,0DH,0DH,0CH,0CH,0CH,0CH,0CH,0BH,0BH,0BH,0BH,0AH,0AH,0AH,0AH,09H,09H,09H

    151.        DB  09H,09H,08H,08H,08H,08H,07H,07H,07H,06H,06H,06H,06H,06H,05H,05H,05H,05H,04H

    152.        DB  04H,04H,04H,03H,03H,03H,03H,03H,02H,02H,02H,02H,02H,02H,01H,01H,01H,01H,01H

    153.        DB  01H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H

    154.        DB  00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,01H,01H,01H,01H

    155.        DB  01H,01H,02H,02H,02H,02H,02H,02H,03H,03H,03H,03H,03H,04H,04H,04H,04H,05H,05H

    156.        DB  05H,05H,06H,06H,06H,06H,06H,07H,07H,07H

    157. TAB2:DB 00H,40H,81H,0C1H,01H,40H,80H,0BFH,0FDH,3BH,79H,0B6H,0F2H,2DH,68H,0A2H,0DBH,13H

    158.        DB 49H,7FH,0B4H,0E7H,19H,4AH,7AH,0A8H,0D5H,00H,2AH,52H,79H,9EH,0C1H,0E3H,03H,21H

    159.        DB 3DH,58H,70H,87H,9CH,0AFH,0C0H,0CFH,0DCH,0E7H,0F0H,0F7H,0FCH,0FDH,0FEH,0FFH,0FCH

    160.        DB 0F7H,0F0H,0E7H,0DCH,0CFH,0C0H,0AFH,9CH,87H,70H,58H,3DH,21H,03H,0E3H,0C1H,9EH,79H

    161.        DB 52H,2AH,00H,0D5H,0A8H,7AH,4AH,19H,0E7H,0B4H,7FH,49H,13H,0DBH,0A2H,68H,2DH,0F2H

    162.        DB 0B6H,79H,3BH,0FDH,0BFH,80H,40H,01H,0C1H,81H,40H,00H,0C0H,7FH,3FH,0FFH,0C0H,80H

    163.        DB 41H,03H,0C5H,87H,4AH,0EH,0D3H,98H,5EH,25H,0EDH,0B7H,81H,4CH,19H,0E7H,0B6H,86H

    164.        DB 58H,2BH,00H,0D6H,0AEH,87H,62H,3FH,1DH,0FDH,0DFH,0C3H,0A8H,90H,79H,64H,51H,40H,31H

    165.        DB 24H,19H,10H,09H,04H,02H,01H,02H,04H,09H,10H,19H,24H,31H,40H,51H,64H,79H,90H,0A8H

    166.        DB 0C3H,0DFH,0FDH,1DH,3FH,62H,87H,0AEH,0D6H,00H,2BH,58H,86H,0B6H,0E7H,19H,4CH,81H

    167.        DB 0B7H,0EDH,25H,5EH,98H,0D3H,0EH,4AH,87H,0C5H,03H,41H,80H,0C0H,0FFH,3FH,7FH,0C0H

    168. ;===============================================      

    169. END



    170. 实验9-3:PWM信号输出

    171. 下面的程序产生固定的PWM脉宽输出,按00h键开始,按其他键结束。

    172. $MOD841

    173. CLK81       EQU P3.5

    174. DAT81     EQU P3.3

    175. KEY        EQU P3.2

    176. KEYVAL EQU 30H

    177. ;***********************

    178. ORG  0000H

    179. LJMP  MAIN

    180. ORG  0003H

    181. LJMP  SERVE

    182. ORG  0060H

    183. MAIN:                MOV  R0, #0FFH;

    184. CLR_IN_RAM: MOV  @R0, #00H

    185. DJNZ  R0, CLR_IN_RAM

    186. MOV  SP, #50H

    187. LCALL YS

    188. ;***********************初始化

    189. LCALL INI841

    190. LCALL INIWH8281

    191. ;***********************欢迎菜单

    192. LCALL WELCOME

    193. MOV 40H, #0FFH

    194. ZYS:                    LCALL YS

    195. DJNZ 40H, ZYS

    196. ;***********************清屏

    197. MOV A, #16H

    198. LCALL WTO81

    199. MOV A, #00H

    200. LCALL WTO81

    201. ;***********************

    202. START:              LJMP $

    203. ;***********************

    204. SERVE:               MOV A, #93H

    205. LCALL WTO81

    206. LCALL RDKVAL

    207. MOV A, 30H

    208. CJNE A, #00H, J1

    209. MOV CFG841, #40H           ; 选择PWM输出引脚为P3.4和P3.3,分频数为32

    210. MOV PWMCON, #13H      ; 允许PWM输出,两通道16位归零PWM选择模式

    211. MOV PWM0L, #55H          ; 写入初值

    212. MOV PWM1L, #00H          ; 写入初值

    213. MOV PWM0H, #05H                   ; 写入初值

    214. MOV PWM1H, #10H                   ; 写入初值

    215. LJMP HUIQU

    216. J1:                       MOV PWMCON, #80H

    217. HUIQU:              RETI



    218. ;********************初始化841

    219. INI841:             SETB EA

    220.                            SETB EX0

    221.                            RET

    222. ;***********************初始化WH8281

    223. INIWH8281:       SETB CLK81

    224.                   SETB DAT81

    225. MOV A, #12H

    226. LCALL WTO81

    227. MOV A, #84H;

    228. LCALL WTO81

    229. RET

    230. ;***********************欢迎界面子程

    231. WELCOME:       MOV A, #14H;

    232. LCALL WTO81

    233. MOV A, #0CH

    234. LCALL WTO81

    235. MOV A, #14H

    236. LCALL WTO81

    237. MOV A, #1BH

    238. LCALL WTO81

    239. MOV A, #14H

    240. LCALL WTO81

    241. MOV A, #2DH

    242. LCALL WTO81

    243. MOV A, #14H

    244. LCALL WTO81

    245. MOV A, #3DH

    246. LCALL WTO81

    247. MOV A, #14H

    248. LCALL WTO81

    249. MOV A, #40H

    250. LCALL WTO81

    251. RET

    252. ;***********************写入WH8281子程序

    253. WTO81:             MOV R6, #08H

    254. WAT:                 CLR  CLK81

    255.                     NOP

    256.                             NOP

    257.                     SETB CLK81

    258.                             JB DAT81, WAT

    259.                             CLR  CLK81

    260.                             LCALL DELAY

    261.                             SETB CLK81

    262.                             JNB  DAT81, $

    263. WTB81:              RLC  A

    264.                             MOV DAT81,C

    265.                     CLR  CLK81

    266.                             LCALL DELAY

    267.                             SETB CLK81

    268.                             LCALL DELAY

    269.                             LCALL DELAY

    270.                             DJNZ R6, WTB81

    271.                             SETB DAT81

    272.                     RET

    273. DELAY:              NOP

    274. NOP

    275. NOP

    276. NOP

    277. NOP

    278. NOP

    279. NOP

    280. NOP

    281. NOP

    282. NOP

    283. RET

    284. ;***********************读取键值子程序

    285. RDKVAL:          CLR CLK81

    286. NOP

    287. NOP

    288. SETB CLK81

    289. JB DAT81, $

    290. CLR CLK81

    291. LCALL DELAY

    292. SETB CLK81

    293. MOV R6, #08H

    294. RD1:                   LCALL DELAY

    295. LCALL DELAY

    296. MOV C, DAT81

    297. RLC A

    298. CLR CLK81

    299. LCALL DELAY

    300. SETB CLK81

    301. DJNZ R6, RD1

    302. MOV KEYVAL, A

    303. RET

    304. ;***********************延时程序

    305. YS:                      MOV R5, #00H

    306. MOV R4, #50H

    307. YS1:                    DJNZ R5, $

    308. DJNZ R4, YS1

    309. RET

    310. ;***********************

    311. END
    复制代码


    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-7-17 13:49
  • 签到天数: 367 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2016-3-3 22:18:11 | 显示全部楼层
    这年头,汇编的,也是够少了啊!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-12-18 23:54 , Processed in 0.145972 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.