⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pcf8563_test.lis

📁 pcf8563开发
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 01BC           ;  while(*s)  
 01BC           ;  {
 01BC                   .dbline 127
 01BC           ;   LCD_write_char(0,*s);
 01BC FA01              movw R30,R20
 01BE 2081              ldd R18,z+0
 01C0 3327              clr R19
 01C2 0027              clr R16
 01C4 1127              clr R17
 01C6 82DF              xcall _LCD_write_char
 01C8                   .dbline 128
 01C8           ;   s++;
 01C8 4F5F              subi R20,255  ; offset = 1
 01CA 5F4F              sbci R21,255
 01CC                   .dbline 129
 01CC           ;  }
 01CC           L35:
 01CC                   .dbline 125
 01CC FA01              movw R30,R20
 01CE 2080              ldd R2,z+0
 01D0 2220              tst R2
 01D2 A1F7              brne L34
 01D4           X7:
 01D4                   .dbline -2
 01D4           L33:
 01D4                   .dbline 0 ; func end
 01D4 0C940000          xjmp pop_xgset303C
 01D8                   .dbsym r s 20 pc
 01D8                   .dbsym r Y 12 c
 01D8                   .dbsym r X 10 c
 01D8                   .dbend
 01D8                   .dbfunc e LCD_write_data _LCD_write_data fV
 01D8           ;           data -> y+0
 01D8           ;              i -> R20
 01D8           ;            dat -> R14,R15
 01D8           ;              Y -> R12
 01D8           ;              X -> R10
                        .even
 01D8           _LCD_write_data::
 01D8 0E940000          xcall push_xgset30FC
 01DC C22E              mov R12,R18
 01DE A02E              mov R10,R16
 01E0 2497              sbiw R28,4
 01E2 EC84              ldd R14,y+12
 01E4 FD84              ldd R15,y+13
 01E6                   .dbline -1
 01E6                   .dbline 138
 01E6           ; }
 01E6           ; 
 01E6           ; /*-------------------------------------------------------------
 01E6           ; 函数: 写数字
 01E6           ; 参数:列---X=0~15,行---Y=0~1 写地址
 01E6           ;       dat为所要写的数字
 01E6           ; ---------------------------------------------------------------*/
 01E6           ; void LCD_write_data(unsigned char X,unsigned char Y,int dat)
 01E6           ; {
 01E6                   .dbline 151
 01E6           ;  //unsigned char fuhao;
 01E6           ;  unsigned char data[4];
 01E6           ;  unsigned char i;
 01E6           ;   
 01E6           ;  /*if(dat<0)
 01E6           ;  {
 01E6           ;   fuhao='-';
 01E6           ;   dat=0-dat;
 01E6           ;  }
 01E6           ;  else
 01E6           ;   fuhao=' ';
 01E6           ;  data[0]=fuhao;*/
 01E6           ;  data[0]=dat/1000+0x30; dat%=1000;
 01E6 28EE              ldi R18,1000
 01E8 33E0              ldi R19,3
 01EA 8701              movw R16,R14
 01EC 0E940000          xcall div16s
 01F0 C801              movw R24,R16
 01F2 C096              adiw R24,48
 01F4 8883              std y+0,R24
 01F6                   .dbline 151
 01F6 28EE              ldi R18,1000
 01F8 33E0              ldi R19,3
 01FA 8701              movw R16,R14
 01FC 0E940000          xcall mod16s
 0200 7801              movw R14,R16
 0202                   .dbline 152
 0202           ;  data[1]=dat/100+0x30;  dat%=100;
 0202 24E6              ldi R18,100
 0204 30E0              ldi R19,0
 0206 0E940000          xcall div16s
 020A C801              movw R24,R16
 020C C096              adiw R24,48
 020E 8983              std y+1,R24
 0210                   .dbline 152
 0210 24E6              ldi R18,100
 0212 30E0              ldi R19,0
 0214 8701              movw R16,R14
 0216 0E940000          xcall mod16s
 021A 7801              movw R14,R16
 021C                   .dbline 153
 021C           ;  data[2]=dat/10+0x30; 
 021C 2AE0              ldi R18,10
 021E 30E0              ldi R19,0
 0220 0E940000          xcall div16s
 0224 C801              movw R24,R16
 0226 C096              adiw R24,48
 0228 8A83              std y+2,R24
 022A                   .dbline 154
 022A           ;  data[3]=dat%10+0x30; 
 022A 2AE0              ldi R18,10
 022C 30E0              ldi R19,0
 022E 8701              movw R16,R14
 0230 0E940000          xcall mod16s
 0234 C801              movw R24,R16
 0236 C096              adiw R24,48
 0238 8B83              std y+3,R24
 023A                   .dbline 156
 023A           ;  
 023A           ;  LCD_set_xy(X,Y);
 023A 2C2D              mov R18,R12
 023C 0A2D              mov R16,R10
 023E 2EDF              xcall _LCD_set_xy
 0240                   .dbline 157
 0240           ;  for(i=0;i<4;i++)
 0240 4427              clr R20
 0242 0BC0              xjmp L44
 0244           L41:
 0244                   .dbline 158
 0244           ;   LCD_write_char(0,data[i]);
 0244 CE01              movw R24,R28
 0246 E42F              mov R30,R20
 0248 FF27              clr R31
 024A E80F              add R30,R24
 024C F91F              adc R31,R25
 024E 2081              ldd R18,z+0
 0250 3327              clr R19
 0252 0027              clr R16
 0254 1127              clr R17
 0256 3ADF              xcall _LCD_write_char
 0258           L42:
 0258                   .dbline 157
 0258 4395              inc R20
 025A           L44:
 025A                   .dbline 157
 025A 4430              cpi R20,4
 025C 98F3              brlo L41
 025E           X8:
 025E                   .dbline -2
 025E           L37:
 025E                   .dbline 0 ; func end
 025E 2496              adiw R28,4
 0260 0C940000          xjmp pop_xgset30FC
 0264                   .dbsym l data 0 A[4:4]c
 0264                   .dbsym r i 20 c
 0264                   .dbsym r dat 14 I
 0264                   .dbsym r Y 12 c
 0264                   .dbsym r X 10 c
 0264                   .dbend
 0264                   .dbfile D:\mega16_32实验板资料\ICCAVR源程序\twi\pcf8563\pcf8563.h
 0264                   .dbfunc e write_tim _write_tim fc
 0264           ;              a -> R16
                        .even
 0264           _write_tim::
 0264                   .dbline -1
 0264                   .dbline 15
 0264           ; /*******************************************
 0264           ; *       PCF8563的I2C(TWI)操作函数              *
 0264           ; *  文 件 名:pcf8563.h                                           *
 0264           ; *  函数功能:利用CPU的硬件TWI接口操作    *
 0264           ; *  设    计:张子凤                                                  *
 0264           ; *  修改日期:2008年11月11日                              *
 0264           ; *  版    本:V1.0                                                *
 0264           ; *  主控芯片:Mega16                                              *
 0264           ; *******************************************/
 0264           ; //全局变量定义
 0264           ; unsigned char timer[8];                                                //时钟数据
 0264           ; 
 0264           ; //写入时间函数
 0264           ; unsigned char write_tim(unsigned char a)
 0264           ; {   
 0264                   .dbline 16
 0264           ;   sendbyte(a);                                  //发送
 0264                   .dbline 16
 0264 03B9              out 0x3,R16
 0266                   .dbline 16
 0266 84E8              ldi R24,132
 0268 86BF              out 0x36,R24
 026A                   .dbline 16
 026A                   .dbline 16
 026A                   .dbline 17
 026A           ;   waitack();                                            //等待写完成
 026A           L46:
 026A                   .dbline 17
 026A           L47:
 026A                   .dbline 17
 026A 26B6              in R2,0x36
 026C 27FE              sbrs R2,7
 026E FDCF              rjmp L46
 0270           X9:
 0270                   .dbline 17
 0270                   .dbline 17
 0270                   .dbline 18
 0270           ;   if(chkack()!=MT_SLA_ACK)return I2C_ERR;  //检查是否正确写入
 0270 81B1              in R24,0x1
 0272 887F              andi R24,248
 0274 8831              cpi R24,24
 0276 11F0              breq L49
 0278           X10:
 0278                   .dbline 18
 0278 0027              clr R16
 027A 01C0              xjmp L45
 027C           L49:
 027C                   .dbline 19
 027C           ;   else return I2C_CRR;
 027C 01E0              ldi R16,1
 027E                   .dbline -2
 027E           L45:
 027E                   .dbline 0 ; func end
 027E 0895              ret
 0280                   .dbsym r a 16 c
 0280                   .dbend
 0280                   .dbfunc e read_tim _read_tim fc
                        .even
 0280           _read_tim::
 0280                   .dbline -1
 0280                   .dbline 24
 0280           ; }
 0280           ; 
 0280           ; //读出时间函数
 0280           ; unsigned char read_tim(void)
 0280           ; {
 0280                   .dbline 25
 0280           ;  rcvackbyte();                                          //接收一字节并返回应答
 0280 84EC              ldi R24,196
 0282 86BF              out 0x36,R24
 0284                   .dbline 26
 0284           ;  waitack();                                             //等待接收完成
 0284           L52:
 0284                   .dbline 26
 0284           L53:
 0284                   .dbline 26
 0284 26B6              in R2,0x36
 0286 27FE              sbrs R2,7
 0288 FDCF              rjmp L52
 028A           X11:
 028A                   .dbline 26
 028A                   .dbline 26
 028A                   .dbline 27
 028A           ;  if(chkack()!=MR_DATA_ACK)return I2C_ERR;               //检查是否接收成功
 028A 81B1              in R24,0x1
 028C 887F              andi R24,248
 028E 8035              cpi R24,80
 0290 11F0              breq L55
 0292           X12:
 0292                   .dbline 27
 0292 0027              clr R16
 0294 01C0              xjmp L51
 0296           L55:
 0296                   .dbline 29
 0296           ;  else
 0296           ;  return(TWDR);                                  //读出时钟数据
 0296 03B1              in R16,0x3
 0298                   .dbline -2
 0298           L51:
 0298                   .dbline 0 ; func end
 0298 0895              ret
 029A                   .dbend
 029A                   .dbfunc e read_timer _read_timer fc
                        .even
 029A           _read_timer::
 029A AA92              st -y,R10
 029C 4A93              st -y,R20
 029E                   .dbline -1
 029E                   .dbline 36
 029E           ; }
 029E           ; 
 029E           ; /**********************************
 029E           ; *          读出数据函数                         *
 029E           ; **********************************/
 029E           ; unsigned char read_timer(void)
 029E           ; {
 029E                   .dbline 37
 029E           ;  start();                                       //启动总线
 029E 84EA              ldi R24,164
 02A0 86BF              out 0x36,R24
 02A2                   .dbline 38
 02A2           ;  waitack();                                             //等待启动完成
 02A2           L58:
 02A2                   .dbline 38
 02A2           L59:
 02A2                   .dbline 38
 02A2 26B6              in R2,0x36
 02A4 27FE              sbrs R2,7
 02A6 FDCF              rjmp L58
 02A8           X13:
 02A8                   .dbline 38
 02A8                   .dbline 38
 02A8                   .dbline 39
 02A8           ;  if(chkack()!=START)return I2C_ERR;             //检查是否启动成功
 02A8 81B1              in R24,0x1
 02AA 887F              andi R24,248
 02AC 8830              cpi R24,8
 02AE 11F0              breq L61
 02B0           X14:
 02B0                   .dbline 39
 02B0 0027              clr R16
 02B2 4BC0              xjmp L57
 02B4           L61:
 02B4                   .dbline 40
 02B4           ;  write_tim(PCF8563_SLA_W);                              //发送写地址
 02B4 02EA              ldi R16,162
 02B6 D6DF              xcall _write_tim
 02B8                   .dbline 41
 02B8           ;  write_tim(0x02);                               //写数据地址
 02B8 02E0              ldi R16,2
 02BA D4DF              xcall _write_tim
 02BC                   .dbline 43
 02BC           ;       
 02BC           ;  start();
 02BC 84EA              ldi R24,164
 02BE 86BF              out 0x36,R24
 02C0                   .dbline 44

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -