历史上的今天
返回首页

历史上的今天

今天是:2024年10月22日(星期二)

正在发生

2019年10月22日 | PS7219的PIC单片机接口程序

2019-10-22 来源:eefocus

; Copyright (c) 1998, MICROCHIP Technology Inc 

;******************************************* 

TITLE "PS7219 TEST" ;标题 

LIST P=16C711 ;处理器为PIC16C711单片机 

#INCLUDE P16c711.INC 

  

TIMER1 EQU H'000C' ;定义延时寄存器 

TIMER2 EQU H'000D' 

SENT_ADDRESS EQU H'000E' ;定义发送地址寄存器 

SENT_DATA EQU H'000F' ;定义发送数据寄存器 

LED1 EQU H'0010' 

LED2 EQU H'0011' 

LED3 EQU H'0012' 

LED4 EQU H'0013' 

LED5 EQU H'0014' 

LED6 EQU H'0015' 

LED7 EQU H'0016' 

LED8 EQU H'0017' 

COUNT EQU H'0018' 

NO_OP EQU 0X00 ;定义控制寄存器 

DIGIT1 EQU 0X01 

DIGIT2 EQU 0X02 

DIGIT3 EQU 0X03 

DIGIT4 EQU 0X04 

DIGIT5 EQU 0X05 

DIGIT6 EQU 0X06 

DIGIT7 EQU 0X07 

DIGIT8 EQU 0X08 

DECODE EQU 0X09 

INTSEN EQU 0X0A 

SCAN EQU 0X0B 

SHUT EQU 0X0C 

FLASH EQU 0X0D 

DISPLAY EQU 0X0F 

  

LOAD EQU 0 ;通讯引脚定义 

DOUT EQU 1 

CLK EQU 2 

  

ORG 0 

GOTO START ;程序开始 

ORG H'0010' 

;************************* 

; 延时子程序 

;************************* 

T1 

MOVLW 33 ;延时子程序T1 

MOVWF TIMER1 

DEL_LOP 

CLRWDT 

DECFSZ TIMER1,1 

GOTO DEL_LOP 

RETURN 

  

T2 

MOVLW 0X04 ;延时子程序T2 

MOVWF TIMER1 

MOVLW 0XFF 

LOOP2 

MOVWF TIMER2 

LOOP1 

CLRWDT 

DECFSZ TIMER2,1 

GOTO LOOP1 

DECFSZ TIMER1,1 

GOTO LOOP2 

RETURN 

  

SEND 

MOVLW 8 ;数据传送子程序SEND 

MOVWF COUNT 

BCF PORTA,LOAD ;初始化LOAD引脚 

CALL T1 

SET_LP1 

BCF STATUS,C ;发送8位地址 

BSF PORTA,CLK 

RLF SENT_ADDRESS,1 

BCF PORTA,DOUT 

BTFSC STATUS,C 

BSF PORTA,DOUT 

BCF PORTA,CLK 

CALL T1 ;调用延时子程序T1 

DECFSZ COUNT,1 ;COUNT减一为1零则结束传送 

GOTO SET_LP1 

BSF PORTA,CLK 

MOVLW 8 

MOVWF COUNT 

BSF PORTA,LOAD 

SET_LP2 

BCF STATUS,C ;发送8位数据 

BSF PORTA,CLK 

RLF SENT_DATA,1 

BCF PORTA,DOUT 

BTFSC STATUS,C 

BSF PORTA,DOUT 

BCF PORTA,CLK 

CALL T1 ;调用延时子程序T1 

DECFSZ COUNT,1 ;COUNT减一为零则结束传送 

GOTO SET_LP2 

BSF PORTA,CLK 

CALL T1 

BSF PORTA,LOAD 

BSF PORTA,DOUT 

RETURN ;子程序返回 

  

START 

BSF STATUS,RP0 ;主程序 

MOVLW 0X18 

MOVWF TRISA 

MOVLW 0XFF 

MOVWF TRISB 

BCF STATUS,RP0 

CALL T1 

CALL T1 

MOVLW 0X12 

MOVWF PORTA 

BCF PORTA,LOAD 

CON_COM 

CALL T1 ;初始化PS7219内部RAM 

MOVLW 0X0A ;设置亮度为最亮 

MOVWF SENT_ADDRESS 

MOVLW 0X0F 

MOVWF SENT_DATA 

CALL SEND ;调用串行通讯子程序 

CALL T1 

MOVLW 0X0B ;设置扫描界线为8位 

MOVWF SENT_ADDRESS 

MOVLW 0X07 

MOVWF SENT_DATA 

CALL SEND ;调用串行通讯子程序 

CALL T1 

MOVLW 0X09 ;设置每位译码方式为BCD译码 

MOVWF SENT_ADDRESS 

MOVLW 0XFF 

MOVWF SENT_DATA 

CALL SEND 

CALL T1 

MOVLW 0X0C ;设置工作方式为正常 

MOVWF SENT_ADDRESS 

MOVLW 0X01 

MOVWF SENT_DATA 

CALL SEND 

  

LED_CON 

CALL T1 ;LED显示控制部分 

MOVLW 0X01 ;LED1显示为1 

MOVWF SENT_ADDRESS 

MOVLW 0X01 

MOVWF SENT_DATA 

CALL SEND 

CALL T1 

MOVLW 0X02 ;LED2显示为2 

MOVWF SENT_ADDRESS 

MOVLW 0X02 

MOVWF SENT_DATA 

CALL SEND 

CALL T1 

MOVLW 0X03 ;LED3显示为3 

MOVWF SENT_ADDRESS 

MOVLW 0X03 

MOVWF SENT_DATA 

CALL SEND 

CALL T1 

MOVLW 0X04 ;LED4显示为4 

MOVWF SENT_ADDRESS 

MOVLW 0X04 

MOVWF SENT_DATA 

CALL SEND 

CALL T1 

MOVLW 0X05 ;LED5显示为5 

MOVWF SENT_ADDRESS 

MOVLW 0X05 

MOVWF SENT_DATA 

CALL SEND 

CALL T1 

MOVLW 0X06 ;LED6显示为6 

MOVWF SENT_ADDRESS 

MOVLW 0X06 

MOVWF SENT_DATA 

CALL SEND 

CALL T1 

MOVLW 0X07 ;LED7显示为7 

MOVWF SENT_ADDRESS 

MOVLW 0X07 

MOVWF SENT_DATA 

CALL SEND 

CALL T1 

MOVLW 0X08 ;LED8显示为8 

MOVWF SENT_ADDRESS 

MOVLW 0X08 

MOVWF SENT_DATA 

CALL SEND 

CALL T1 

  

MOVLW 0X0F ;进入测试模式 

MOVWF SENT_ADDRESS 

MOVLW 0X01 

MOVWF SENT_DATA 

CALL SEND 

CALL T1 

MOVLW 0X0F ;退出测试模式 

MOVWF SENT_ADDRESS 

MOVLW 0X00 

MOVWF SENT_DATA 

CALL SEND 

CALL T1 

MOVLW 0X0D ;使能8位LED闪烁 

MOVWF SENT_ADDRESS 

MOVLW 0XFF 

MOVWF SENT_DATA 

CALL SEND 

FINISH CLRWDT ;清Watch Dog 

GOTO FINISH 

END ;结束   


推荐阅读

史海拾趣

General Instrument Corp公司的发展小趣事
如果使用外部参考电压,请确保参考电压稳定且准确。
Esterline Technologies Corporation公司的发展小趣事
根据型号不同,提供2到8个输入通道选项,适用于需要多路信号采样的应用场景。
Hirel Systems Ltd公司的发展小趣事
提供8位分辨率,能够准确地将模拟信号转换为数字信号。
百事通科技(BUDDIES)公司的发展小趣事

为了降低成本、提高效率,百事通科技(BUDDIES)开始着手进行产业链整合。公司与上下游企业建立了紧密的合作关系,通过优化供应链、共享资源等方式,实现了产业链的协同发展。这一举措不仅提高了公司的运营效率,还增强了公司的市场竞争力。

Hirect公司的发展小趣事
使用万用表等工具检查变压器的输入输出电压和电流是否正常,确认变压器是否损坏。
HB公司的发展小趣事

背景:Fritz Hartmann Gerätebau KG成立于1961年,起初专注于电子元器件的研发与生产。随着技术的不断积累和市场的逐步拓展,公司业务逐渐壮大,并更名为Hartmann Codier GmbH。这一时期,公司凭借对开关技术的深刻理解,逐步在行业内建立了良好的声誉。

发展:在初创阶段,Hartmann Codier GmbH致力于提升产品质量和技术水平,通过不断的技术创新和产品优化,逐渐在旋转编码开关和微动开关领域占据了一席之地。同时,公司也积极拓展国内外市场,为后续的快速发展奠定了坚实的基础。

问答坊 | AI 解惑

请问有没有朋友用过PHY芯片

我现在正在调试的系统中用到了RTL8212,是一块千兆双口物理层收发器。现在他能够正常接收数据,但是却不能发送数据,发出的数据在接收方说是错误的数据包。我是用一块FPGA来控制的,现在不知道问题出在哪里,不知道是我的FPGA时序不对还是RTL8212的 ...…

查看全部问答>

华为经典UNIX 教程

目  录 第1章 UNIX操作系统概述 6 1.1 UNIX操作系统简介 6 1.2 UNIX系统组成 6 1.3 与UNIX有关的几个名词 7 第2章 UNIX常用操作 9 2.1 启动终端 9 2.2 登录 9 2.3 UNIX命令 9 2.4 注销(退出UNIX系统) 13 第3章 UNIX文件系统 ...…

查看全部问答>

申请一下,用于电子负载

以前用的是C8051F的,想改成MO。申请一下!!谢谢…

查看全部问答>

silverlight for embedded的环境搭建

请问有没有人知道啊 谢谢了…

查看全部问答>

高分问linux串口发送问题

arm+linux平台 通过 串口发送 数据 write完以后 必须sleep()发送才能成功 否则,发送的就在中间某位产生错误码,数据长的时候,总是在中间顿一下,然后发后半部分,前半部分的最后一个字节就错掉了 这是怎么回事? 太怪了 高手帮忙分析吧 …

查看全部问答>

STC单片机A/D转换程序问题

我用stc12c5608AD自带的AD做一个AD转换的程序 具体的代码如下 void ad_cov() { P1M0=P1M0||0x20; P1M1=P1M1||0x20; //选择P1.5为开漏。(做A/D使用时选择的模式) ADC_CONTR=0xc5; //540个时钟周期转换一次;ADC_FLAG=0;ADC_START=0(设置为1 ...…

查看全部问答>

自己做了板,触摸屏没反应

   自己仿着S3C2410a的开发板,根据需要自己做了一个底板(插在上面的核心板没做),画了PCB,只用了电源,串口和液晶屏(其它的没画),做好板之后又焊上器件,当把原来的核心板(系统在flash里)插在我做的板子上时,液晶可以正常开启,但是触摸时只 ...…

查看全部问答>

Vista是否支持WDM驱动?

Vista是否支持WDM驱动?还是说会出一个新的架构?…

查看全部问答>

推荐个光电式转速传感器

帮忙选一个转速传感器,要输出计数脉冲的,工作电压最好是5v的,万分感谢!!应该是从光电式传感器中选吧,一般的就行,没哟特殊要求,转速几十转每分…

查看全部问答>

迎接TI杯电赛的一组LaunchPad培训作业照片

2012TI杯电赛早已结束。手机里尚有一些培训时拍的照片,主要布置学生完成的LaunchPad作业。…

查看全部问答>