找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 821|回复: 3
收起左侧

如何编写一个A/D模数转换的汇编语言程序?目前只有c语言

[复制链接]
ID:982824 发表于 2021-11-20 14:22 | 显示全部楼层 |阅读模式
由于本论坛禁止直接求程序,禁止伸手党,所以向大家请教一下大致的实现方法与思路,理清头绪后我自己来写程序去实现,谢谢大家
mmexport1637389193928.png
mmexport1637389269737.png
mmexport1637389273392.png
mmexport1637389276580.png
回复

使用道具 举报

ID:955673 发表于 2021-11-20 17:01 | 显示全部楼层
stc 的官方例程两种都有啊
回复

使用道具 举报

ID:401564 发表于 2021-11-20 17:24 | 显示全部楼层
ADC0808是1999年的产品了
不管是在价格还是在性能上,都已经没有优势可言了,一片ADC0808的价格,可以买两片带10位ADC的单片机了
并不是说教材上有什么就要学什么的
如果你要学汇编,基本上学到DS1302和24C02,就算是汇编已经学会了,想要学精,就不是汇编的事了,而是你的其它技术了
像这个玩意,根本就不是有没有教程的问题,也不是编程语言的问题,而是你对数据手册理解能力的问题
懂得看数据手册了,如果你会了汇编,有没有教程都是一样的写代码
回复

使用道具 举报

ID:235200 发表于 2021-11-20 22:07 | 显示全部楼层
汇编更容易读出,
ALE BIT P2.6
ST BIT P2.3
OE   BIT P2.7
EOC  BIT P3.7
ADD1 BIT P2.2
ADD2 BIT P2.1
ADD3 BIT P2.0
ACC1 BIT P3.0
ACC2 BIT P3.1
ACC3 BIT P3.2
L2   BIT P3.5
L1   BIT P3.4
      ORG    0000H
      AJMP   START
START:JNB    L1,LOOP3
      LJMP   LOOP2
LOOP3:LCALL  DELAY1
      JNB    L1,$
      JMP    LOOP1
LOOP1:JNB    L1,START   ;测试IN0
      CLR    ADD1
      CLR    ADD2
      CLR    ADD3
      LCALL  W1
      LCALL  DE
      JNB    L1,LOOP3
      JNB    L1,START   ;测试IN1
      CLR    ADD1
      CLR    ADD2
      SETB   ADD3
      LCALL  W1
      LCALL  DE
      JNB    L1,LOOP3
      JNB    L1,START   ;测试IN2
      CLR    ADD1
      SETB   ADD2
      CLR    ADD3
      LCALL  W1
      LCALL  DE
      JNB    L1,LOOP3
      JNB    L1,START   ;测试IN3
      CLR    ADD1
      SETB   ADD2
      SETB   ADD3
      LCALL  W1
      LCALL  DE
      JNB    L1,LOOP3
      JNB    L1,START   ;测试IN4
      SETB   ADD1
      CLR    ADD2
      CLR    ADD3
      LCALL  W1
      LCALL  DE
      JNB    L1,LOOP3
      JNB    L1,LOOP4   ;测试IN5
      SETB   ADD1
      CLR    ADD2
      SETB   ADD3
      LCALL  W1
      LCALL  DE
      JNB    L1,LOOP3
      JNB    L1,LOOP4  ;测试IN6
      SETB   ADD1
      SETB   ADD2
      CLR    ADD3
      LCALL  W1
      LCALL  DE
      JNB    L1,LOOP5
      JNB    L1,LOOP4  ;测试IN7
      SETB   ADD1
      SETB   ADD2
      SETB   ADD3
      LCALL  W1
      LCALL  DE
      LJMP   LOOP1
LOOP4:LJMP   START
LOOP5:LJMP   LOOP3
LOOP2:CLR    ACC1  
      CLR    ACC2
      CLR    ACC3
      LCALL  W1
      LJMP   START
W1:   SETB   ALE       ;启动0809
      CLR    ST
      CLR    OE
      SETB   ST
      CLR    ST
      JNB    EOC,$  
      SETB   OE
LOOP: MOV    R1,#20H
      SETB   ACC1      ;初始设置
      SETB   ACC2
      SETB   ACC3
W2:   CLR    ACC1      ;显示第一位
      CLR    ACC2
      MOV    A,P0      ;将p0口和0809的各个数据口连接
      MOV    B,#51
      DIV    AB        ;将二进制数转化成10进制数
      MOV    DPTR,#TAB
      MOVC   A,@A+DPTR
      ANL    A,#07FH
      MOV    P1,A
      LCALL  DELAY
      MOV    A,#0FFH
      MOV    P1,A      
      MOV    A,B        ;显示第二位
      MOV    B,#100
      DIV    AB
      MOVC   A,@A+DPTR
      SETB   ACC1
      CLR    ACC2
      MOV    P1,A
      LCALL  DELAY
      MOV    A,#0FFH
      MOV    P1,A
      MOV    A,B       ;显示第三位
      MOV    B,#10
      DIV    AB
      MOVC   A,@A+DPTR
      CLR    ACC1
      SETB   ACC2
      MOV    P1,A
      LCALL  DELAY
      MOV    A,#0FFH
      MOV    P1,A
      MOV    A,B      ;显示第四位
      MOVC   A,@A+DPTR
      SETB   ACC1
      MOV    P1,A
      LCALL  DELAY
      DJNZ   R1,W2
      RET
TAB:          DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H  
DELAY: MOV  R5,#29H   ;延时1         
D1:    MOV  R6,#1AH
       DJNZ R6,$
       DJNZ R5,D1
       RET
DE:   MOV R1,#0FFH   ;延时2
D2:   MOV R3,#0FH
      DJNZ R3,$
      DJNZ R1,D2
      RET
DELAY1:        MOV R6,#20                                ;延时10ms子程序
C1:                                MOV R5,#248
                                DJNZ R5,$
                                DJNZ R6,C1
                                RET

END
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表