一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 1787|回复: 9
收起左侧

[51单片机] 哪位有汇编的画圆的程序? 世界上存在这种东西不?

[复制链接]
发表于 2015-3-26 20:37 | 显示全部楼层 |阅读模式
在网上看了半天,感觉是看不懂了,算法太复杂。
发表于 2015-3-26 23:04 | 显示全部楼层
void OLED_circle(uchar X,uchar Y,uchar R,uchar R1,uchar G1,uchar B1)
{//Bresenham算法
    uchar a,b;
    int c;
    unsigned char temp1,temp2;
    temp1 = (B1<<3)|(G1>>3);
    temp2 = (G1<<5)|R1;
   
    a=0;
    b=R;
    c=3-2*R;
    while (a<b)
    {
        OLED_dot(X+a,Y+b,temp1,temp2);     //        7
        OLED_dot(X-a,Y+b,temp1,temp2);                                                        //        6
        OLED_dot(X+a,Y-b,temp1,temp2);                                                        //        2
        OLED_dot(X-a,Y-b,temp1,temp2);                                                        //        3
        OLED_dot(X+b,Y+a,temp1,temp2);                                                        //        8
        OLED_dot(X-b,Y+a,temp1,temp2);                                                        //        5
        OLED_dot(X+b,Y-a,temp1,temp2);                                                        //        1
        OLED_dot(X-b,Y-a,temp1,temp2);                                                        //        4

        if(c<0) c=c+4*a+6;
        else
        {
            c=c+4*(a-b)+10;
            b-=1;
        }
       a+=1;
    }
    if (a==b)
    {
        OLED_dot(X+a,Y+b,temp1,temp2);
        OLED_dot(X+a,Y+b,temp1,temp2);
        OLED_dot(X+a,Y-b,temp1,temp2);
        OLED_dot(X-a,Y-b,temp1,temp2);
        OLED_dot(X+b,Y+a,temp1,temp2);
        OLED_dot(X-b,Y+a,temp1,temp2);
        OLED_dot(X+b,Y-a,temp1,temp2);
        OLED_dot(X-b,Y-a,temp1,temp2);
    }
}



汇编的不会,C的有.C编译下就能看到汇编的啦.
算法就是这个Bresenham算法.

为毛总要抱着汇编呢.来玩STM的库函数吧或者arduino吧.抄抄抄就是了.

发表于 2015-3-26 23:51 | 显示全部楼层
算法不复杂,只是要开平方麻烦,用查表就没难度了
 楼主| 发表于 2015-3-27 06:50 | 显示全部楼层
litchiate 发表于 2015-3-26 23:04
void OLED_circle(uchar X,uchar Y,uchar R,uchar R1,uchar G1,uchar B1)
{//Bresenham算法
    uchar  ...

也很想玩32位的,没时间和精力再学了, 现在用汇编也是复制复制,底层的常用的也都有了。

发表于 2015-3-27 19:08 | 显示全部楼层
litchiate 发表于 2015-3-26 23:04
void OLED_circle(uchar X,uchar Y,uchar R,uchar R1,uchar G1,uchar B1)
{//Bresenham算法
    uchar  ...

这个算法效果还可以,我试过。
发表于 2015-3-28 22:03 来自手机 | 显示全部楼层
唉,我也是一直在用汇编。最近研究点阵屏,各种扫描方式,用汇编真是太麻烦了。感觉还是下一步学c了。c51的源程序也多些。
 楼主| 发表于 2015-3-29 08:22 | 显示全部楼层
快活丞 发表于 2015-3-28 22:03
唉,我也是一直在用汇编。最近研究点阵屏,各种扫描方式,用汇编真是太麻烦了。感觉还是下一步学c了。c51的 ...

我是不学了,简单的c能看懂,这上面投太多精力浪费,有时间还是出去走走,陪陪家人,找朋友玩玩,玩电子太坑人了

发表于 2015-3-30 21:22 | 显示全部楼层
本帖最后由 快活丞 于 2015-3-30 21:24 编辑
老弹弓 发表于 2015-3-29 08:22
我是不学了,简单的c能看懂,这上面投太多精力浪费,有时间还是出去走走,陪陪家人,找朋友玩玩,玩电子 ...

哈哈,这几年我少玩了,前些天在hexj123坛友的带动下,我又开始搞了,老婆还说哈,你好久没玩垃圾了呢。她还说怀念当年我做单片机学习开发板的时候,那时候她帮插元件,我焊接,头对头趴在桌子上
 楼主| 发表于 2015-3-31 13:48 | 显示全部楼层
快活丞 发表于 2015-3-30 21:22
哈哈,这几年我少玩了,前些天在hexj123坛友的带动下,我又开始搞了,老婆还说哈,你好久没玩垃圾了呢:5 ...

去年一年没动烙铁,就是看着买下的一屋子垃圾愁的慌,     为了不浪费,今年又买了些

发表于 2015-4-1 21:07 | 显示全部楼层
老弹弓 发表于 2015-3-31 13:48
去年一年没动烙铁,就是看着买下的一屋子垃圾愁的慌,     为了不浪费,今年又买了些

是啊,为了不浪费,年年在买,一年比一年多

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-5-10 23:56 , Processed in 0.071310 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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