搜索
bottom↓
回复: 9

本人写出的第一个海尔单片机程序,汇编的,后面再加C的

[复制链接]

出0入0汤圆

发表于 2013-6-13 09:23:15 | 显示全部楼层 |阅读模式
第一个海尔单片机程序,用7P90芯片。 就是将PB口所接8个LED灯全亮,延时后,再关掉,循环而已。
#include <HR7P90H.INC>
#include <User_StudyDemo_Haier.inc>

ORG  0X0000
GOTO START
;*******************************************************************************
;                          主   程   序   区
;*******************************************************************************
START
;---------------------------初 始 化------------------------
        CALL    MCU_INIT                ;系统初始化(RAM、端口及特殊寄存器)
        BSS         PC,0
        CLR                PB

MAIN_LOOP
                MOVI        0xff
                MOVA        PB                ;8个LED亮
        CALL    DELAY200MS              ;调用延时
        CALL    DELAY200MS              ;调用延时
        CALL    DELAY200MS              ;调用延时
        CALL    DELAY200MS              ;调用延时
        CALL    DELAY200MS              ;调用延时
        CLR                PB                        ;关LED
        CALL    DELAY200MS              ;调用延时
        CALL    DELAY200MS              ;调用延时
        CALL    DELAY200MS              ;调用延时
        CALL    DELAY200MS              ;调用延时
        GOTO    MAIN_LOOP               ;返回主程序循环
        RET
;*******************************************************************************
;                        初   始   化   模   块   区
;*******************************************************************************

MCU_INIT

;---------------------------------------
PORT_INIT                               ;端口、SFR初始化
;        BCC     STATUS,RP1
;        BSS     STATUS,RP0              ;设置文件寄存器的体1
;        MOVI    0x00
        CLR            PAT                  ;设置PA口为数字I/O口
        CLR     PIE1                    ;片内外设中断控制寄存器1清零
        CLR     PIE2                    ;片内外设中断控制寄存器2清零
;        MOVI    0x00  
;        BSS                PSW,RP0                  
        CLR            PCT                  
        CLR            PBT                   ;设置PB口为输出
;        MOVI    0xFA                    ;"11111010"



        RET

;*******************************************************************************
;                        延   时   子   程   序   区
;*******************************************************************************
DELAY200MS                              ;200ms延时入口(实测200.007ms)
        MOVI    .200                    ;设置外层循环参数值200(T=(1+2+200*B-1+4)us)
        GOTO    DELAYMS_ENTR
DELAY5MS                                ;5ms延时入口(实测5.005ms)
        MOVI    .5                      ;设置外层循环参数值5(T=(1+1+5*B-1+4)us)
DELAYMS_ENTR
        MOVA    DLY_1
DELAYXMS0                               ;延时公共体,基值1ms,即B=1+1+[(0xF9*4)-1]+3=1000
        MOVI    0xF9                    ;设置内层循环参数值
        MOVA    DLY_2
        NOP3
        JDEC    DLY_2,F                 ;变量DLY_2内容递减,若为0跳过下条指令
        GOTO    $-2                     ;跳转回NOP指令,使循环体执行4个指令周期
        JDEC    DLY_1,F                 ;变量DLY_1内容递减,若为0跳过下条指令
        GOTO    DELAYXMS0               ;跳转到DELAYXMS0处
        RET
END


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2013-6-13 09:25:31 | 显示全部楼层
沙发,学习

出0入0汤圆

 楼主| 发表于 2013-6-16 01:13:23 | 显示全部楼层
以下是用C语言写的,请提建议。
#include        "HIC.h"
#include "HR7P90H.h"

void  delay(void);
#define                UINT                unsigned  int
#define                UCHAR                unsigned        char
main()
{
UCHAR                LOOP_NUM;
PBT=0x00;
PCT=0x00;
PC0=1;
while(1)
        {
        PB=0x00;
        for(LOOP_NUM=0x00;LOOP_NUM<0x3f;LOOP_NUM++)        delay();
        PB=0xff;
        delay();
        }
}

void        delay()
{
        UCHAR        delay_num1,delay_num2;       
        for(delay_num1=0x00;delay_num1<0x2f;delay_num1++)
        {
                for(delay_num2=0x00;delay_num2<0x2f;delay_num2++);
                       
        }
}

                       
                       

出0入0汤圆

 楼主| 发表于 2013-6-16 21:25:04 | 显示全部楼层
用中断方式所做,用T8做定时器,晶振频率 4MHz;

#include        "hic.h"
#include        "hr7p90h.h"


#define                Delay_time                0x3f                //定时时间
#define                UINT                unsigned  int
#define                UCHAR                unsigned        char

#define                HIGH                1
#define                LOW                0
sbit        delay_flag,led_flag;
/***************************************************
  中断程序
****************************************************/
void  timer(void) interrupt
{
        if(T8NIE && T8NIF)
                {
                        T8NIE=LOW;                //关定时中断
                        T8NIF=LOW;
                        delay_flag=HIGH;
                        T8N=0x3c;
                }
                T8NIE=HIGH;                //开定时中断
}



/***************************************************
主程序
****************************************************/
main()
{
UCHAR                delay_num;
delay_flag=led_flag=LOW;
delay_num=Delay_time;
PBT=0x00;                // 设置PB口为输出模式
PB=0x00;
PCT=0x00;                //设置PC口为输出模式
PC0=HIGH;
//PC=0x00;

T8NC=0x07;                //256分频,T8
INTG=0xc0;                //开中断
T8N=0x3c;
T8NIE=HIGH;                //开T8定时中断


while(1)
        {
        while(~delay_flag);
        if(delay_num)
                {
                delay_flag=LOW;
                delay_num--;
                }
        else
                {
                delay_num=Delay_time;
                if(led_flag)        PB=0xff;
                else                                PB=0x00;
                led_flag=~led_flag;       
                }
        }       

}

出0入0汤圆

发表于 2013-6-22 17:26:05 | 显示全部楼层

出0入0汤圆

发表于 2013-6-22 17:33:15 | 显示全部楼层
很不错,支持

出0入0汤圆

发表于 2013-8-26 21:13:53 | 显示全部楼层
好贴,学习学习。

出0入0汤圆

发表于 2013-8-27 07:37:11 | 显示全部楼层
楼主水平很高啊,学习啦

出0入0汤圆

发表于 2013-8-27 15:53:01 | 显示全部楼层
楼主水平确实很高啊

出0入0汤圆

发表于 2013-10-14 21:56:05 | 显示全部楼层
学习啦
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 09:26

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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